Разгрузить улей стол в. DAT-файл с использованием Spark или Pyspark или Python - PullRequest
0 голосов
/ 03 октября 2019

В настоящее время я выгружаю данные из таблицы улья в текстовый файл, используя hql. Так как это занимает слишком много времени. Я хотел бы перейти на spark или pyspark. Я новичок в spark / python. Не могли бы вы помочь по этому вопросу, в настоящее время я использую приведенный ниже запрос для выгрузки

beeline --outputformat=dsv --silent=true - e 'select * from <tablename>' > /dir/samplefile.txt

Дайте мне знатьдля любой другой настройки производительности, а также.

1 Ответ

0 голосов
/ 04 октября 2019

Мы не можем записывать данные в фрейме spark напрямую .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")

Вы можете следовать отсюда, теперь имя вашей таблицы улья - dbms, чтобы записать данные из таблицы улья, используя spark, выполните следующие шаги

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")
...