我正在尝试从SparkSQL作业访问S3文件。我已经尝试了几个帖子的解决方案,但似乎没有工作。也许是因为我的EC2集群为Hadoop2.7运行了新的Spark2.0。
我是这样设置hadoop的:
sc.hadoopConfiguration.set("fs.s3a.impl","org.apache.hadoop.fs.s3a.S3AFileSystem")
sc.hadoopConfiguration.set("fs.s3a.awsAccessKeyId", accessKey)
sc.hadoopConfiguration.set("fs.s3a.awsSecretAccessKey", secretKey)
我使用sbt程序集构建了一个uber-jar,使用:
name := "test"
version := "0.2.0"
scalaVersion := "2.11.8"
libraryDependencies += "com.amazonaws" % "aws-java-sdk" % "1.7.4"
libraryDependencies += "org.apache.hadoop" % "hadoop-aws" % "2.7.3" excludeAll(
ExclusionRule("com.amazonaws", "aws-java-sdk"),
ExclusionRule("commons-beanutils")
)
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0" % "provided"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.0.0" % "provided"
PS:如果我切换到s3n协议,我得到以下异常:
java.io.ioException:方案s3n没有文件系统
如果要使用s3n
:
sc.hadoopConfiguration.set("fs.s3n.impl","org.apache.hadoop.fs.s3native.NativeS3FileSystem")
sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", accessKey)
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", secretKey)
现在,关于这个异常,您需要确保两个JAR都位于驱动程序和辅助类路径上,并确保在使用客户机模式时通过--JARs
标志将它们分发到辅助节点:
spark-submit \
--conf "spark.driver.extraClassPath=/location/to/aws-java-sdk.jar" \
--conf "spark.driver.extraClassPath=/location/to/hadoop-aws.jar" \
--jars /location/to/aws-java-sdk.jar,/location/to/hadoop-aws.jar \
此外,如果您正在构建您的uber JAR,并包含aws-java-sdk
和hadoop-aws
,那么没有理由使用--packages
标志。
可选:将停止文字复制到tmp文件夹 收集所有 筛选出 唯一的区别是在第二个片段中,我们有一个密集的矩阵。
问题内容: 我需要一个允许我使用Java在Gmail中进行电子邮件操作(例如,发送/接收邮件)的库。 问题答案: 您是否看到过Java的g4j-GMail API? GMailer Java版API(g4j)是一组API,允许Java程序员与GMail进行通信。借助G4J,程序员可以制作基于GMail大量存储的基于Java的应用程序。
问题内容: 我被困在一个相当复杂的Python模块中,该模块不会返回有用的错误代码(它实际上会无声地失败而失败)。但是,它调用的基础C库设置了errno。 通常,errno是通过OSError属性传入的,但是由于我没有异常,因此无法理解。 使用ctypes时,libc.errno不起作用,因为errno是GNU libc中的宏。Python 2.6有一些优势,但Debian仍使用Python 2.
问题内容: 您如何从Java 访问? 最后一行使编译器死于“ scala类型。None不带参数”。 由于“找不到符号构造函数None()”而失败: 由于“找不到符号变量无”而失败: 在2007年,这曾经奏效,但后来Scala改变了。Java编译器提供: 问题答案: 这可能起作用: def apply [A](x:A):Option [A] 一个Option工厂,如果参数不为null,则创建Some
问题内容: 我在访问SimpleXML对象的部分时遇到问题。当我整个对象时,我得到正确的输出,而当我其余对象(嵌套标签)时,我得到正确的输出,但是当我遵循docs和时 ,我得到一个空对象,尽管事实是第一个清楚地表明,存在要输出的属性。 任何人都知道我在这里做错了/如何进行这项工作? 问题答案: 您可以通过在XML节点上调用attribute()函数来获取XML元素的属性。然后,您可以var_dum
目前正在尝试从JAVA访问类型库文件,我尝试了以下操作并出现了相应的错误: 1- Com2Java:每次尝试连接到我的应用程序时,我都会收到此错误: 默认情况下,在客户端版本的Windows上不启用小型转储 2- Com4j:它只产生接口,无法理解如何使用它们(我找不到任何类,只有接口) 3-经过小搜索,发现了Visual J,但无法下载它,因为它被剥夺了。 任何人都可以提供建议吗? 非常感谢。