Чтение CSV-файлов, сохраненных в формате hdf, с использованием sparklyr с локального рабочего стола
Мы пытаемся загрузить файл csv, который хранится в HDFS, с помощью функции spark_read_csv, доступной в sparklyr. Код R выполняется на рабочем столе Windows и настроен для подключения к удаленному кластеру пряжи в режиме клиента пряжи для отправки и выполнения заданий. Используемая версия свечи - 1.6.0. Мы включили com.databricks_spark-csv_2.10-1.0.3.jar и org.apache.commons_commons-csv-1.1.jar в путь класса spark, поскольку spark 1.6.0 не поддерживает CSV. Проблема: когда мы звоним
spark_read_csv(sc=sc
,path ="/user/xyz/adv.csv"
,name ="FinStatement"
,infer_schema = TRUE
,header = TRUE
)
система ищет файл в удаленных hdf-файлах после того, как к имени пути добавляется буква диска C. Местоположение hdfs, в котором выполняется поиск по коду: hdfs: // имя-машины / C: /user/user1/adv.csv вместо просмотра hdfs: //machine-name/user/user1/adv.csv, следовательно, не удается получить файл. Любая помощь в решении этой проблемы очень ценится.
Версия Spark: 1.6.0 Версия Sparklyr: 0.5.6 Версия Hadoop: 2.6.0 Трассировка исключений:
Error: java.lang.IllegalArgumentException: Pathname /C:/user/user1/adv.csv from hdfs://machine-name/C:/user/p587722/adv.csv is not a valid DFS filename.
at org.apache.hadoop.hdfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:196)
at org.apache.hadoop.hdfs.DistributedFileSystem.access$000(DistributedFileSystem.java:105)
at org.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:1118)
at org.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:1114)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1114)
at org.apache.hadoop.fs.Globber.getFileStatus(Globber.java:57)
Информация о сеансе Rstudio:
R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] stringr_1.2.0 rJava_0.9-8 dplyr_0.7.1 sparklyr_0.5.6
loaded via a namespace (and not attached):
[1] Rcpp_0.12.10 rstudioapi_0.6 bindr_0.1 magrittr_1.5 xtable_1.8-2 R6_2.2.0 rlang_0.1.1
[8] httr_1.2.1 tools_3.3.2 DBI_0.7 withr_1.0.2 dbplyr_1.1.0 htmltools_0.3.6 assertthat_0.2.0
[15] rprojroot_1.2 digest_0.6.12 tibble_1.3.3 bindrcpp_0.2 shiny_1.0.3 base64enc_0.1-3 glue_1.1.1
[22] mime_0.5 stringi_1.1.3 backports_1.0.5 jsonlite_1.5 httpuv_1.3.3 pkgconfig_2.0.1
1 ответ
Использование hdfs:///user/xyz/adv.csv вместо использования /user/xyz/adv.csv добилось цели.
Спасибо @javierluraschi от sparklyr.