我想以正常可读的文本格式将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格式的数据。我是不是漏了什么?
1条答案
按热度按时间llmtgqce1#
当您显式地创建表时,该ddl将定义该表。通常,文本文件是配置单元中的默认文件,但它可能在您的环境中已更改。
在create语句的末尾添加“storageastextfile”以确保表是纯文本的。