Ошибка копирования Sparklyr

Я использую библиотеку Sparklyr для чтения и записи данных из R в HDFS. Чтение данных работает, как и ожидалось, но запись вызывает проблемы.

Чтобы иметь возможность использовать функцию spark_write_csv, мне нужно преобразовать мои R data.frames в объекты Spark. Я использую для этого функцию sparklyr sdf_copy_to (также пробовал с copy_to). Тем не менее, я всегда получаю ошибки

Код:

table1 <- sdf_copy_to(sc,dataframe,OVERWRITE=TRUE)
spark_write_csv(table1, "path")

Ошибка:

Ошибка: org.apache.hadoop.mapred.InvalidInputException: путь ввода не существует: hdfs://iacchadoopdev01.dap:8020/tmp/Rtmp2gpelH/spark_serialize_62547a7b0f9ad206fd384af04e585deb3a2636ca7b1f026943d4cc1d11cs7759a.c7759a

Кто-нибудь сталкивался с такой же проблемой и знает, как это решить?

Возможной причиной может быть то, что функция sdf_copy_to сохраняет данные в моей папке linux/tmp, в то время как функция записи ищет данные в папке HDFS/tmp.


person Olivier Deruyver    schedule 01.03.2017    source источник
comment
Не знаю, имеет ли это какое-то отношение к проблеме (вероятно, нет), но разве OVERWRITE не должно быть в нижнем регистре?   -  person Aurèle    schedule 01.03.2017
comment
Спасибо за ваш ответ. Только что попробовал перезаписать в нижнем регистре, но выдал ту же ошибку.   -  person Olivier Deruyver    schedule 01.03.2017
comment
Не могли бы вы попробовать использовать имя Spark DataFrame ("dataframe" здесь?) вместо table1 (имя оболочки R)?   -  person Aurèle    schedule 06.03.2017


Ответы (1)


У меня такая же проблема. Вам нужно поместить .csv в hdfs. Вы можете сделать это через оболочку.

Вы входите в свой кластер через ssh. Затем вы используете «put», чтобы поместить .csv в hdfs.

Напишите в шелле после подключения к кластеру:

hdfs dfs 'путь к локальному файлу/file.csv' поставить 'путь к папке в hdfs по вашему выбору'

Затем вы будете использовать путь hdfs для загрузки файла.

person Felix    schedule 30.05.2017