spark将数据写入分区配置单元表的速度非常慢

y53ybaqx  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(583)

我想以正常可读的文本格式将sparkDataframe存储到配置单元表中。因为我第一次这么做

sqlContext.sql("SET spark.sql.hive.convertMetastoreParquet=false")

我的Dataframe是这样的:

final_data1_df = sqlContext.sql("select a, b from final_data")

我试着通过以下方式来写:

final_data1_df.write.partitionBy("b").mode("overwrite").saveAsTable("eefe_lstr3.final_data1")

但这非常慢,甚至比配置单元表写入还要慢。为了解决这个问题,我想通过hiveddl语句定义分区,然后加载如下数据:

sqlContext.sql("""
CREATE TABLE IF NOT EXISTS eefe_lstr3.final_data1(
a BIGINT
)
PARTITIONED BY (b INT)
"""
)
sqlContext.sql("""
INSERT OVERWRITE TABLE eefe_lstr3.final_data1 PARTITION (stategroup)
select * from final_data1""")

但这是给分区Hive表,但仍然Parquet格式的数据。我是不是漏了什么?

llmtgqce

llmtgqce1#

当您显式地创建表时,该ddl将定义该表。通常,文本文件是配置单元中的默认文件,但它可能在您的环境中已更改。
在create语句的末尾添加“storageastextfile”以确保表是纯文本的。

相关问题