将 hive 表卸载到。使用 Spark 或 pyspark 或 python 的 dat 文件
Posted
技术标签:
【中文标题】将 hive 表卸载到。使用 Spark 或 pyspark 或 python 的 dat 文件【英文标题】:Unload hive table into. dat file using Spark or pyspark or python 【发布时间】:2019-10-03 19:44:02 【问题描述】:我目前正在使用 hql 将 hive 表中的数据卸载到文本文件中。因为它花费了太多时间。我想去 spark 或 pyspark。我是 spark/python 的新手。请你帮忙 目前我正在使用下面的查询来卸载
beeline --outputformat=dsv --silent=true - e 'select * from <tablename>' > /dir/samplefile.txt
如果有任何其他性能调整,请告诉我。
【问题讨论】:
为了清楚起见,您希望文件格式为 .dat 或 .dsv。因为两者都是两种不同的格式,其中 dat 是通用类型,而 dsv 主要由 MS SQL 使用。您也可以尝试使用 Sqoop 工具 我想要文件。 dat 而不是 dsv。由于我需要将输出文件作为管道分隔文件,因此我给出了 outputformat=dsv 您可以使用存储到数据帧中的SELECT
语句读取配置单元表。然后使用 Spark 的dataframe.write
方法通过指定分隔符来获取所需位置的文件。像这样df.write.option("sep","|").option("header","true").csv(filename)
【参考方案1】:
我们不能直接写入 spark dataframe .DAT 文件,但我们可以写入多种其他格式。
为了便于理解,我将创建一个数据框并将其保存为配置单元表。
scala> val dbms = Seq((1,2,3, "asd"), (2,3,4,"wee"), (3,4,5, "wer")).toDF("a", "b", "c", "d")
dbms: org.apache.spark.sql.DataFrame = [a: int, b: int ... 2 more fields]
scala> dbms.show()
+---+---+---+---+
| a| b| c| d|
+---+---+---+---+
| 1| 2| 3|asd|
| 2| 3| 4|wee|
| 3| 4| 5|wer|
+---+---+---+---+
scala> dbms.createOrReplaceTempView("dbms")
您可以从这里开始,现在您的 hive 表名称是 dbms,要使用 spark 从 hive 表中写入数据,请按照以下步骤操作
scala> val data = spark.sql("select * from dbms")
data: org.apache.spark.sql.DataFrame = [a: int, b: int ... 2 more fields]
以 text/csv 格式编写
scala> data.write.format("com.databricks.spark.csv").option("header", "true").save("output.csv")
以广泛使用的拼花格式编写
scala> data.write.mode("overwrite").parquet("/path/to/hdfs/" + "data.parquet")
【讨论】:
以上是关于将 hive 表卸载到。使用 Spark 或 pyspark 或 python 的 dat 文件的主要内容,如果未能解决你的问题,请参考以下文章