我需要将CSV文件转换为分区的镶木地板文件。我无法找到正确的技术来做到这一点。我将CSV作为DF,因为数据是从数据库(SAP HANA)导出的,我正在解析表的“create.sql”以自动创建数据帧。我将使用这种技术处理数千个表。
var df_sql=s"""CREATE TEMPORARY TABLE CDHDR_MRP_DF (MANDANT VARCHAR(3),
OBJECTCLAS VARCHAR(15) , OBJECTID VARCHAR(90) , CHANGENR VARCHAR(10),
USERNAME VARCHAR(12) , UDATE VARCHAR(8) , UTIME VARCHAR(6)
, TCODE VARCHAR(20) , PLANCHNGNR VARCHAR(12) , ACT_CHNGNO VARCHAR(10)
, WAS_PLANND VARCHAR(1) , CHANGE_IND VARCHAR(1) , LANGU VARCHAR(1)
, VERSION VARCHAR(3) , _DATAAGING VARCHAR(8) )
USING com.databricks.spark.csv OPTIONS (path "$vCsv") """
vc.sql(df_sql)
我将其转换为RDD,然后将其保存为Parquet:
var rdd=vc.sql(s"""SELECT * from $vDF_Table""")
rdd.write.mode("overwrite").parquet(vOutputPath)
这很有效。 如果我添加'.partitionBy(“USERNAME”)'错误消息是
<console>:121: error: value partitionBy is not a member of Unit
将CSV转换为分区镶木地板文件的正确方法是什么?
答案 0 :(得分:0)
parquet
执行一项操作。如果你想分区,你可以在它发生之前调用它:
rdd.write.partitionBy("foo").mode("overwrite").parquet(vOutputPath)