1. 程式人生 > >利用pyspark 讀取 S3上資料

利用pyspark 讀取 S3上資料

    spark = SparkSession.builder.master('local').appName("hxy_test_script").getOrCreate()
    sc = spark.sparkContext
    # s3環境
    sc._jsc.hadoopConfiguration().set("fs.s3a.access.key", 你的s3ID-key)
    sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key", 你的s3SECRET-key)
    sc._jsc.hadoopConfiguration().set("fs.s3a.endpoint", "s3.cn-north-1.amazonaws.com.cn")

    rdd_data = sc.wholetextFile("s3a://要讀的bucket_name/text/xxx.txt")  # 舉例的,實際情況看自己路徑
    print (rdd_data.take(10))

注意:以上只是程式碼層面,但是執行會有問題,因為spark讀取s3檔案,

必須要有aws涉及到的兩個依賴包:aws-java-sdk-1.7.4.jar,hadoop-aws-2.7.3.jar

當專案裡有這兩個包了後,提交spark採用如下就可以了:

spark-submit --jars aws-java-sdk-1.7.4.jar,hadoop-aws-2.7.3.jar --master local test_extract_model_spark.py

ps:我的是本地spark,伺服器上的:(我的舉例如下)============================================

    初始化改為:spark = SparkSession.builder.master('your-spark伺服器-url').appName("hxy_test_script").getOrCreate()

提交改為:spark-submit -jars aws-java-sdk-1.7.4.jar,hadoop-aws-2.7.3.jar --master spark://192.168.31.10:7077 --executor-memory 40G --total-executor-cores 20 test_extract_model_spark.py