我有一个示例应用程序,用于将csv文件读入Dataframe。可以使用该方法将Dataframe以Parquet格式存储到配置单元表中 df.saveAsTable(tablename,mode)
.
上面的代码工作得很好,但是我每天都有太多的数据,所以我想基于creationdate(表中的列)动态划分hive表。
是否有任何方法可以动态划分Dataframe并将其存储到配置单元仓库中。要避免使用硬编码insert语句吗 hivesqlcontext.sql(insert into table partittioin by(date)....)
.
这个问题可以看作是:如何将Dataframe直接保存到配置单元?
非常感谢您的帮助。
6条答案
按热度按时间ddrv8njm1#
我也面临同样的问题,但使用以下技巧我解决了。
当我们对任何表进行分区时,分区列就变得区分大小写。
分区列应以相同的名称出现在Dataframe中(区分大小写)。代码:
sqxo8psd2#
我可以使用
df.write().mode(SaveMode.Append).partitionBy("colname").saveAsTable("Table")
我必须启用以下属性才能使其工作。lp0sw83n3#
这对我使用python和spark2.1.0是有效的。
不知道这是不是最好的方法,但它是有效的。。。
nr9pn0ug4#
可以在上配置
SparkSession
这样:或者可以将它们添加到.properties文件中
这个
spark.hadoop
spark配置需要前缀(至少在2.4中是这样),下面是spark如何设置此配置:3hvapo4f5#
这就是我的工作。我设置这些设置,然后将数据放在分区表中。
6yjfywim6#
我相信它是这样工作的:
df
是包含年、月和其他列的Dataframe或