Запись Spark в куст как ошибка OR C: путь не является файлом - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть искровой код, который пытается записать в улей ИЛИ C таблица Версия Spark: 2.2.0.2.6

Я создал фрейм данных, и когда я делаю DF.show(10) Я могу видеть данные и столбец также совпадают. Но когда я пытаюсь сохранить его в таблице улья ИЛИ C, используя следующий код:

DF.write.mode(SaveMode.Overwrite).format("orc").saveAsTable(hive_stgtableName)

или

DF.repartition(5).write.mode("Append").insertInto(hive_stgtableName_PReq)

Я получаю следующую ошибку:

Caused by: org.apache.hadoop.ipc.RemoteException: Path is not a file: /apps/dir1/dir2/dir3/dir4/mydb/hive_stgtableName

Это hive_stgtableName указывает на

/ apps / dir1 / dir2 / dir3 / dir4 / mydb / hive_stgtableName.

Теперь каждый раз, когда я запускаю этот код после воссоздания таблицы кустов, я получаю случайные каталоги, но с той же ошибкой.

/apps/dir1/dir2/dir3/dir4/mydb/xx_1

/apps/dir1/dir2/dir3/dir4/mydb/xx_2

/apps/dir1/dir2/dir3/dir4/mydb/xx_3

Я пытался восстановить все таблицы, но ошибка все еще появляется. По сути, это ошибка случайного выбрасывания для всех каталогов, которые находятся на одном уровне /apps/dir1/dir2/dir3/dir4/mydb/hive_stgtableName

МОЙ Улей Таблица операторов ниже

CREATE EXTERNAL TABLE IF NOT EXISTS mydb.hive_stgtableName( headertimestamp string, recordtype string, messageid string, myattri_chn_updatesallowed string, myattri_chn_messageid string, myattri_chn_version string, myattri_chn_identity string, myattri_chn_system string, myattri_chn_xmlns_ns2 string, myattri_chn_xmlns_soap string, myattri_chn_xmlns_ns3 string, myattri_chn_xmlns_ns4 string, syscontext_servgrp string, syscontext_ntwk string, syscontext_ch string, syscontext_zone string, syscontext_session string, service_id string, myval_contmyval_id string, myval_contmyval_assetref_providerid string, myval_contmyval_assetref_assetid string, climyval_currentdatetime string, climyval_terminaladdr_type string, climyval_terminaladdr string, climyval_targetcode_key string, climyval_targetcode string, placemtopp_id string, placemtopp_serregref string, hashed_header_id string, input_file_name string) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' LOCATION '/apps/dir1/dir1/dir1/dir1/mydb/hive_stgtableName' TBLPROPERTIES ('orc.compress'='SNAPPY');

Любая идея, что может быть причиной этой ошибки. Я много пробовал гуглить, но нигде на эту ошибку не указывает.

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Проблема заключалась в том, что при чтении файлов (которые содержали более 300+), каталог также находился в том же месте. Spark странен в том смысле, что когда я пытаюсь сделать DF.show (10), он все равно показывает мне правильный вывод, но когда я пытаюсь записать данные в таблицу, в этот раз он выдает ошибку и каждый раз показывает случайный каталог. Следовательно, убедившись, что он читает только файлы в качестве входных данных, эта ошибка исчезла.

0 голосов
/ 09 апреля 2020

попробуй

saveAsTable(mydb.hive_stgtableName)
...