Spark 2.x在这里。我需要设置以下Hadoop配置,以便我的# Temporary workaround for there not being an llvm6 apk yet
# Open PR for llvm6 package: https://github.com/alpinelinux/aports/pull/3583
# See https://stackoverflow.com/questions/50258121/building-llvm-6-under-linux-alpine
RUN export BUILD_DEPS='alpine-sdk git diffutils' \
&& apk update \
&& apk add $BUILD_DEPS \
&& adduser -D apk \
&& adduser apk abuild \
&& sudo -iu apk abuild-keygen -a \
&& sudo -iu apk git clone --depth=1 -b pr-llvm-6 https://github.com/xentec/aports \
&& sudo -iu apk sh -xec 'cd aports/main/llvm6; abuild -r' \
&& cp /home/apk/.abuild/*.rsa.pub /etc/apk/keys \
&& apk add /home/apk/packages/main/$(uname -m)/*.apk \
&& deluser --remove-home apk \
&& rm -rf /var/cache/apk/APKINDEX* \
&& apk del --no-cache $BUILD_DEPS
可以与S3通信:
SqlContext
然而,从2.x开始,sparkContext.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "blah1")
sparkContext.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "blah 2")
和SparkContext
似乎是由SqlContext
构建的两个独立对象:
SparkSession
那么,如果val sparkContext = SparkSession.builder().appName("myapp").getOrCreate().sparkContext
val sqlContext = SparkSession.builder().appName("myapp").getOrCreate().sqlContext
与sparkContext.hadoopConfiguration
完全分开,如何为SQLContext
设置SQLContext
属性?
答案 0 :(得分:1)
如果SQLContext与SparkContext完全分开?!
SparkSession
和SQLContext
都不与SparkContext
分开。两者都与特定的SparkContext
实例紧密绑定。使用Spark 2.x时,除了遗留应用程序之外,您还不需要SQLContext
。对于其他所有内容SparkSession
提供了等效的接口。
初始化SparkSession
val spark = SparkSession.builder().appName("myapp").getOrCreate()
并使用其上下文设置Hadoop配置
spark.sparkContext.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "blah1")
在sparkContext
上的代码设置配置中也可以使用。每个Spark应用程序只能有一个SparkContext
,每次调用SparkSession.builder.getOrCreate
时都会重复使用,或者即使您创建newSession
。