pyspark прочитайте форму s3 и напишите - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь читать из s3 и писать в Elasticsearch, используя jupyter install на компьютере-мастере spark

У меня есть эта конфигурация:

import pyspark
import os
#os.environ['PYSPARK_SUBMIT_ARGS'] = "--packages=org.apache.hadoop:hadoop-aws:2.7.3 pyspark-shell"
import findspark
findspark.init()
from pyspark.sql import SparkSession
import configparser

config = configparser.ConfigParser()
config.read(os.path.expanduser("~/.aws/credentials"))
aws_profile='DEFAULT'
access_id = config.get(aws_profile, "aws_access_key_id") 
access_key = config.get(aws_profile, "aws_secret_access_key")

from pyspark import SparkContext, SparkConf
sc_conf = SparkConf()
sc_conf.setAppName("app-3-logstash")
sc_conf.setMaster('spark://172.31.25.152:7077')
sc_conf.set('spark.executor.memory', '24g')
sc_conf.set('spark.executor.cores', '8')
sc_conf.set('spark.cores.max', '32')
sc_conf.set('spark.logConf', True)
sc_conf.set('spark.packages', 'org.apache.hadoop:hadoop-aws:2.7.3')
sc_conf.set('spark.jars', '/usr/local/spark/jars/elasticsearch-hadoop-7.6.0/dist/elasticsearch-spark-20_2.11-7.6.0.jar')
sc = SparkContext(conf=sc_conf)

hadoop_conf=sc._jsc.hadoopConfiguration()
hadoop_conf.set("fs.s3n.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
hadoop_conf.set("fs.s3n.awsAccessKeyId", access_id)
hadoop_conf.set("fs.s3n.awsSecretAccessKey", access_key)


используя эту конфигурацию, я получаю доступ в ES, а не в S3 при попытке чтения из s3 с использованием этого conf я получаю эту ошибку:

Py4JJavaError: Произошла ошибка при вызове z: org. apache .spark.api. python .PythonRDD.collectAndServe. : java .lang.RuntimeException: java .lang.ClassNotFoundException: класс org. apache .had oop .fs.s3native.NativeS3FileSystem не найден

При отключении sc_conf.set ('spark.packages' .. и sc_conf.set ('spark.jars', .. и включить # os.environ ['PYSPARK_SUBMIT_ARGS']], он получает доступ к s3, но не к ES

Что я скучаю?

Спасибо, Янив

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...