2015-10-04 41 views
1

我試圖加載CSV文件到HDFS和讀取同進星火爲RDDS。我正在使用Hortonworks Sandbox並通過命令行嘗試這些。我加載的數據如下:問題讀取CSV文件中的星火

hadoop fs -put data.csv/

的數據似乎正確加載通過以下命令看到:

[[email protected] temp]# hadoop fs -ls /data.csv 
-rw-r--r-- 1 hdfs hdfs 70085496 2015-10-04 14:17 /data.csv 

在pyspark,我試着閱讀本文件,如下所示:

data = sc.textFile('/data.csv') 

但是,下面的命令會引發一個錯誤:

data.take(5) 

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/hdp/2.3.0.0-2557/spark/python/pyspark/rdd.py", line 1194, in take 
    totalParts = self._jrdd.partitions().size() 
    File "/usr/hdp/2.3.0.0-2557/spark/python/lib/py4j-0.8.2.1- src.zip/py4j/java_gateway.py", line 538, in __call__ 
    File "/usr/hdp/2.3.0.0-2557/spark/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py", line 300, in get_return_value 
py4j.protocol.Py4JJavaError: An error occurred while calling o35.partitions. 
: org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: file:/data.csv 

有人可以幫我解決這個錯誤嗎?

回答

2

我想出答案了。我不得不進入HDFS文件的完整路徑名稱如下:

data = sc.textFile('hdfs://sandbox.hortonworks.com:8020/data.csv') 

的全路徑名是從的conf /核心-site.xml中

0

錯誤org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: file:/data.csv

它是從你讀本地文件系統,而不是HDFS的。

嘗試提供類似下面的文件路徑,

data = sc.textFile("hdfs://data.csv") 
+0

在我的情況下獲得的,我必須提供完整的HDFS路徑名稱爲data = sc.textFile('hdfs://sandbox.hortonworks.com:8020/data.csv')。只是hdfs:///沒有工作 – Ravi

+0

你又得到了什麼錯誤?其實它的「//」在hdfs:之後。我輸入'「///」'意外並更正 – WoodChopper

+0

這是我剛輸入hdfs:///文件「」,第1行,在 文件「/usr/hdp/2.3.0.0-2557/火花/蟒/ pyspark/rdd.py 「線1194,在取 totalParts = self._jrdd.partitions()。大小() 文件」 /usr/hdp/2.3.0.0-2557/spark/python/lib/ py4j-0.8.2.1-src.zip/py4j/java_gateway.py 「線路538,在__call__ 文件」 /usr/hdp/2.3.0.0-2557/spark/python/lib/py4j-0.8.2.1-src。 ZIP/py4j/protocol.py」,線路300,在get_return_value py4j.protocol.Py4JJavaError:同時呼籲o37.partitions發生錯誤。 :java.io.IOException異常:不完全HDFS URI,沒有主持人:HDFS:/data.csv – Ravi