如何以未压缩的文本格式将Spark Dataframe存储在配置单元中

时间:2016-12-26 00:24:08

标签: hadoop apache-spark hive

我正在尝试将数据帧存储到外部配置单元表中。当我执行以下操作时:

test[3][19]

在应该存在该表的hdfs位置,我得到了这个:

  

-rw-r - r-- 3 cloudera cloudera 0 2016-12-25 18:58 hadoop / hive / warehouse / VerizonProduct / _SUCCESS

     

-rw-r - r-- 3 cloudera cloudera 482 2016-12-25 18:58 hadoop / hive / warehouse / VerizonProduct / part-r-00000-0acdcc6d-893b-4e9d-b1d6-50bf02bea96a.snappy。镶木

     

-rw-r - r-- 3 cloudera cloudera 482 2016-12-25 18:58 hadoop / hive / warehouse / VerizonProduct / part-r-00001-0acdcc6d-893b-4e9d-b1d6-50bf02bea96a.snappy。镶木

     

-rw-r - r-- 3 cloudera cloudera 482 2016-12-25 18:58 hadoop / hive / warehouse / VerizonProduct / part-r-00002-0acdcc6d-893b-4e9d-b1d6-50bf02bea96a.snappy。镶木

     

-rw-r - r-- 3 cloudera cloudera 482 2016-12-25 18:58 hadoop / hive / warehouse / VerizonProduct / part-r-00003-0acdcc6d-893b-4e9d-b1d6-50bf02bea96a.snappy。镶木

如何将其存储为未压缩的文本格式?

由于

2 个答案:

答案 0 :(得分:1)

您可以添加recordDF.write.option("path", "...").format("text").saveAsTable("...") 选项:

recordDF.write.option("path", "...").format("csv").saveAsTable("...")

GET

答案 1 :(得分:1)

上面的格式为csv的解决方案,发出警告“找不到相应的Hive SerDe for data source provider csv。”。该表不是以所需方式创建的。一种解决方案是创建一个外部表格,如 sqlContext.sql("CREATE EXTERNAL TABLE test(col1 int,col2 string) STORED AS TEXTFILE LOCATION '/path/in/hdfs'")所示。

然后 dataFrame.write.format("com.databricks.spark.csv").option("header", "true").save("/path/in/hdfs")