2017-07-26 4 views
0

私は、Amazon S3からデータをロードするには、次のコードを使用:DSXノートブックでAmazon S3からデータを読み込めないのはなぜですか?

from ingest import Connectors 
from pyspark.sql import SQLContext 
sqlContext = SQLContext(sc) 

S3loadoptions = { 
        Connectors.AmazonS3.ACCESS_KEY   : 'AKIAJYCJAFZYENNPACNA', 
       Connectors.AmazonS3.SECRET_KEY   : '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', 
       Connectors.AmazonS3.SOURCE_BUCKET  : 'ngpconnector', 
       Connectors.AmazonS3.SOURCE_FILE_NAME : 'addresses3.csv', 
       Connectors.AmazonS3.SOURCE_INFER_SCHEMA : '1', 
       Connectors.AmazonS3.SOURCE_FILE_FORMAT : 'csv'} 

S3DF = sqlContext.read.format('com.ibm.spark.discover').options(**S3loadoptions).load() 
S3DF.printSchema() 
S3DF.show(5) 

しかし、私は、このコードスニペットを実行すると、私は次のエラーを取得します。私はdashDBのような別のデータソースから読み込んだときに同様のエラーメッセージが表示されます。

AttributeErrorTraceback (most recent call last) 
<ipython-input-1-9da344857d7e> in <module>() 
     4 
     5 S3loadoptions = { 
----> 6     Connectors.AmazonS3.ACCESS_KEY   : 'AKIAJYCJAFZYENNPACNA', 
     7     Connectors.AmazonS3.SECRET_KEY   : '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', 
     8     Connectors.AmazonS3.SOURCE_BUCKET  : 'ngpconnector', 

AttributeError: 'NoneType' object has no attribute 'AmazonS3' 
+0

エラーは、「取り込み」に「コネクタ」がないことを示します。正しいライブラリからインポートしてもよろしいですか? – Njol

+0

新しいSQLContextを作成しないでください。 DSXのノートブックには既に1つあります。 –

+0

選択したSparkのバージョンを確認してください。 iircには、Spark 1.6とSpark 2.xのインジェストライブラリのさまざまなバージョンがあります。また、Python 2.7対Python 3.5が役割を果たす可能性があります。 –

答えて

0

ご希望の場合は、この代替方法を使用してください。直す

#Replace Accesskey with your Amazon AccessKey and Secret with amazon secret 
hconf.set("fs.s3a.access.key", "<put-your-access-key>") 
hconf.set("fs.s3a.secret.key", "<put-your-secret-key>") 

そしてHadoopの構成でS3パラメータを設定スパーク2.0

spark = SparkSession.builder.getOrCreate() 
hconf = spark.sparkContext._jsc.hadoopConfiguration() 

用スパーク1.6

hconf = sc._jsc.hadoopConfiguration() 

について

https://datascience.ibm.com/blog/use-ibm-data-science-experience-to-read-and-write-data-stored-on-amazon-s3/

戻る

df_data_1.write.save("s3a://charlesbuckets31/FolderB/users.parquet") 

おかげで、 チャールズを書き込むには、広告

spark = SparkSession.builder.getOrCreate() 
df_data_1 = spark.read\ 
.format('org.apache.spark.sql.execution.datasources.csv.CSVFileFormat')\ 
    .option('header', 'true')\ 
    .load('s3a://<your-bucket-name>/<foldername>/<filename>.csv') 
df_data_1.take(5) 

関連する問題