如何将 pyspark 输出写入 impala 表?
Posted
技术标签:
【中文标题】如何将 pyspark 输出写入 impala 表?【英文标题】:how to write the pyspark output to impala table? 【发布时间】:2018-03-22 07:22:06 【问题描述】:我正在使用 pyspark 作为我的问题陈述,在这里,我想组合我的输出并作为我的其他模型的输入。但是在 hdfs 中,我的输出被分成几部分,因此很难将它们组合起来。
所以我想直接将输出结果存储到impala表中,我该怎么做呢?
【问题讨论】:
saveAsTable
有什么问题?或者使用 SparkSQL 运行 INSERT INTO 现有表?此外,HDFS 可以读取整个目录进行输入,因此不清楚您是否要求单个文件
【参考方案1】:
要将存储在 HDFS 中的文件内容公开为一个表,您可以定义一个外部表:
CREATE EXTERNAL TABLE table_name
( column_1 string
, ... )
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION '/some/path/in/hdfs/';
支持不同的文件格式。该示例适用于以制表符作为列分隔符的平面文件。
如果你想改变Spark产生的文件数量,可以在保存之前用rdd.coalesce
改变RDD分区的数量。
【讨论】:
我有一个大的输出要保存,如果保存在单个节点上,那么就会遇到内存问题 没有必要尝试将输出保存到单个文件中,但coalesce
仍然可以将文件数从 1000 个减少到 - 比如说 - 20 个。但你不必这样做那 - 外部表将显示其位置中所有文件的数据。以上是关于如何将 pyspark 输出写入 impala 表?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PySpark 将 JSON 列类型写入 Postgres?