2017-05-23 10 views
0

SparkとHadoopの新機能です。私はSpark 2.0でEC2クラスタをセットアップしようとしています。PySparkからHDFSのファイルにアクセスできない

一時的なHDFSにファイルをコピーしましたが、そこには cd ../を使用していることがわかります。

[email protected] bin]$ ./hadoop fs -ls /root/ 
Warning: $HADOOP_HOME is deprecated. 

Found 2 items 
drwxr-xr-x - root supergroup   0 2017-05-23 12:08 
/root/_distcp_logs_sls6bc 
-rw-r--r-- 3 root supergroup 543046714 2017-05-23 12:08 
/root/input.csv 

ここで私が提出していますPythonのコードです:

import sys 

import numpy as np 
from pyspark.sql import SparkSession 

if __name__ == "__main__": 
    spark = SparkSession\ 
     .builder\ 
     .appName("MatrixMult")\ 
     .getOrCreate() 

    df = spark.read.option("header","true").csv("hdfs://ec2-54-144-193-191.compute-1.amazonaws.com:9000/root/input.csv") 

    df.show(10) 

    spark.close() 

マイHadoopのコア-site.xmlのには、次のセットがあります。

<property> 
    <name>fs.default.name</name> 
    <value>hdfs://ec2-54-144-193-191.compute-1.amazonaws.com:9000</value> 
</property> 

<property> 
    <name>fs.defaultFS</name> 
    <value>hdfs://ec2-54-144-193-191.compute-1.amazonaws.com:9000</value> 
</property> 

をここに私が提出したときに私が手にエラーがあります仕事:

Traceback (most recent call last): 
    File "/root/python_code/matrix_mult.py", line 12, in <module> 
    df = spark.read.option("header","true").csv("hdfs://ec2-54-144-193-191.compute-1.amazonaws.com:9000/root/input.csv") 
    File "/root/spark-2.1.1-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/sql/readwriter.py", line 380, in csv 
    File "/root/spark-2.1.1-bin-hadoop2.7/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py", line 1133, in __call__ 
    File "/root/spark-2.1.1-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/sql/utils.py", line 63, in deco 
    File "/root/spark-2.1.1-bin-hadoop2.7/python/lib/py4j-0.10.4-src.zip/py4j/protocol.py", line 319, in get_return_value 
py4j.protocol.Py4JJavaError: An error occurred while calling o32.csv. 
: java.io.IOException: Failed on local exception: java.io.IOException: Broken pipe; Host Details : local host is: "ip-172-31-58-53.ec2.internal/172.31.58.53"; destination host is: "ec2-54-144-193-191.compute-1.amazonaws.com":9000; 
... 

任意のideなぜこれが起こっているのでしょうか?どのようにそれをデバッグするためのヒント?内部名を使用しようとしましたが、どちらも機能しません。前もって感謝します。

+0

'#!/ usr/bin/python'が先頭にありますか? – philantrovert

答えて

0

私はあなただけfs.defaultFSまたはfs.default.nameのいずれかの設定だと思う。理由はかなり愚かだった

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
<!-- 
    Licensed under the Apache License, Version 2.0 (the "License"); 
    you may not use this file except in compliance with the License. 
    You may obtain a copy of the License at 

    http://www.apache.org/licenses/LICENSE-2.0 

    Unless required by applicable law or agreed to in writing, software 
    distributed under the License is distributed on an "AS IS" BASIS, 
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
    See the License for the specific language governing permissions and 
    limitations under the License. See accompanying LICENSE file. 
--> 

<!-- Put site-specific property overrides in this file. --> 

<configuration> 
    <property> 
     <name>fs.defaultFS</name> 
     <value>hdfs://master:8020</value> 
    </property> 
</configuration> 
0

:としての私のコア-site.xmlのを。 Apacheからダウンロードしたプリコンパイル済みのバイナリを使用していました。 EC2スクリプトを実行するときには、フラグ--hadoop-major-version = 2を渡す必要があります。私はそれをしなかった。

このフラグを使用してクラスタを再構築すると、問題が解決されました。

関連する問題