如何以镶木地板格式保存数据并追加条目
问题描述:
我想按照此example以镶木地板格式保存一些数据并读取它。如果我使用write.parquet("filename")
,那么迭代Spark作业给出错误:如何以镶木地板格式保存数据并追加条目
“filename”已存在。
如果我使用SaveMode.Append
选项,然后星火的工作给出了错误
“.spark.sql.AnalysisException:指定数据库名称或其他限定不允许临时表”。
请让我知道确保将新数据添加到parquet文件的最佳方法。我可以在这些镶木地板上定义主键吗?
我在Hortonworks 2.5系统上使用Spark 1.6.2。下面是代码:
// Option 1: peopleDF.write.parquet("people.parquet")
//Option 2:
peopleDF.write.format("parquet").mode(SaveMode.Append).saveAsTable("people.parquet")
// Read in the parquet file created above
val parquetFile = spark.read.parquet("people.parquet")
//Parquet files can also be registered as tables and then used in SQL statements.
parquetFile.registerTempTable("parquetFile")
val teenagers = sqlContext.sql("SELECT * FROM people.parquet")
答
我相信如果你使用.parquet( “......”),你应该使用.mode( '追加'), 不SaveMode.Append:
DF .write.mode('append')。parquet(“....”)
一种方法是将整个数据读取为Dataframe,使用FileSystem api删除文件,然后再次将数据转储为parquet文件 –