Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 为什么从蜂箱中读取失败的原因是;java.lang.ClassNotFoundException:Class org.apache.hadoop.fs.s3a.S3AFileSystem not found";?_Apache Spark_Amazon S3_Hive_Apache Spark Sql_Apache Spark 1.6 - Fatal编程技术网

Apache spark 为什么从蜂箱中读取失败的原因是;java.lang.ClassNotFoundException:Class org.apache.hadoop.fs.s3a.S3AFileSystem not found";?

Apache spark 为什么从蜂箱中读取失败的原因是;java.lang.ClassNotFoundException:Class org.apache.hadoop.fs.s3a.S3AFileSystem not found";?,apache-spark,amazon-s3,hive,apache-spark-sql,apache-spark-1.6,Apache Spark,Amazon S3,Hive,Apache Spark Sql,Apache Spark 1.6,我在PythonV2.7中使用Spark v1.6.1和Hive v1.2.x 对于Hive,有些表(ORC文件)存储在HDFS中,有些存储在S3中。如果我们试图连接两个表,其中一个在HDFS中,另一个在S3中,则会抛出java.lang.RuntimeException:java.lang.ClassNotFoundException:Class org.apache.hadoop.fs.s3a.S3AFileSystem not found found 例如,当查询HDFS中的配置单元表时,

我在PythonV2.7中使用Spark v1.6.1和Hive v1.2.x

对于Hive,有些表(ORC文件)存储在HDFS中,有些存储在S3中。如果我们试图连接两个表,其中一个在HDFS中,另一个在S3中,则会抛出
java.lang.RuntimeException:java.lang.ClassNotFoundException:Class org.apache.hadoop.fs.s3a.S3AFileSystem not found found

例如,当查询HDFS中的配置单元表时,这会起作用

df1 = sqlContext.sql('select * from hdfs_db.tbl1')
当查询S3中的配置单元表时,这会起作用

df2 = sqlContext.sql('select * from s3_db.tbl2')
下面的代码抛出上面的
运行时异常

sql = """
select *
from hdfs_db.tbl1 a
 join s3_db.tbl2 b on a.id = b.id
"""
df3 = sqlContext.sql(sql)
我们正在从HDFS迁移到S3,这就是为什么存储支持配置单元表(基本上是HDFS和S3中的ORC文件)存在差异的原因。一件有趣的事情是,如果我们使用
DBeaver
beeline
客户机连接到配置单元并发出联接查询,它就可以工作。我还可以使用
sqlalchemy
发出连接查询并获得结果。此问题仅在Spark的sqlContext上显示

有关执行和环境的更多信息:此代码在边缘节点(已安装/配置spark、hadoop、hive、tez等)上的
Jupyter
笔记本中执行。Python环境由Python v2.7的
conda
管理。Jupyter以
pyspark
开头,如下所示

IPYTHON_OPTS="notebook --port 7005 --notebook-dir='~/' --ip='*' --no-browser" \
 pyspark \
 --queue default \
 --master yarn-client
当我转到
环境
下的Spark应用程序UI时,以下
类路径条目
具有以下内容

  • /usr/hdp/2.4.2.0-258/spark/lib/datanucleus-api-jdo-3.2.6.jar
  • /usr/hdp/2.4.2.0-258/spark/lib/datanucleus-core-3.2.10.jar
  • /usr/hdp/2.4.2.0-258/spark/lib/datanucleus-rdbms-3.2.9.jar
  • /usr/hdp/2.4.2.0-258/spark/lib/spark-assembly-1.6.1.2.4.2.0-258-hadoop2.7.1.2.4.2.0-258.jar
  • /usr/hdp/current/hadoop-client/conf/
  • /usr/hdp/current/spark historyserver/conf/
sun.boot.class.path
具有以下值:[代码><<代码>/////////////////////////////////////////////////////////////////////////////////////////usr///////////////////////////////////////jddKKKKK64/Jdk6.8.8.8.8.8.8.8.8.0.0//////////////////////////////////////////Jddk4.8.8.8.8.8.8.8.8.8.8.0/e/lib/jfr.jar:/usr/jdk64/jdk1.8.0_60/jre/classes

spark.executorEnv.PYTHONPATH
具有以下值:
/usr/hdp/2.4.2.0-258/spark/python/lib/py4j-0.9-src.zip:/usr/hdp/2.4.2.0-258/spark/python/:{PWD}/pyspark.zip{PWD}/py4j-0.9-src.zip

Hadoop发行版是通过CDH发行的:
Hadoop 2.7.1.2.4.2.0-258

引用以下内容(谁给出了他在Spark开发中的业绩记录似乎是访问S3文件系统主题的真实来源):

这是通过我在SPARK-7481工作中的测试修复的;手册 解决方法是

火花1.6+ 这需要我的补丁重建spark组件。然而,一旦该补丁发布,尝试在没有AWS JAR的情况下使用程序集将阻止spark的启动,除非您升级到Hadoop 2.7.3

您还可以从其他一些来源找到解决方法:


我没有环境(和经验)来尝试上述内容,因此在您尝试上述内容后,请向我汇报,以便更好地了解Spark中S3支持的现状。谢谢。

如何执行这些代码段?什么是类路径?只需在执行+环境+类路径上添加更多信息。我喜欢把自己看作“一致主张的来源”,而不是真理:后者仅由测试保持。spark hadoop云模块在spark 2.3中,因此没有设置所有使用-Phadoop云的构建。对于Spark 1.6,您需要在CP上安装一个匹配版本的hadoop aws和amazon-s3-sdk。对不起,我不知道CDH在那里做什么。