当我试图用file://test ()从指定的位置(如/test )读取拼图文件时,我得到一个错误,提示spark.read.parquet不存在。将core-site.xml作为资源添加到代码中时
sc.hadoopConfiguration.addResource(new Path(<path-to-core-site.xml>))它确实在hdfs中出现。但是,我不想在代码中添加资源。我的问题是如何确保spark读取core-site.xml并使用hdfs作为默认文件系统。
我在虚拟机中设置了一台ubuntu 18.04.2LTS服务器,使用Hadoop3、spark 2.4.2和yarn作为资源管理器。我已经将core-site.xml的fs.defaultFS设置为hdfs://localhost:9000。我还在bash文件中配置了HADOOP_CONF_DIR。
发布于 2019-06-25 22:52:53
这是一个一般性的问题,有很多可能的答案。我会尽我所能地回答:核心,链接中解释了这一点,你可以将环境变量https://spark.apache.org/docs/latest/configuration.html#inheriting-hadoop-cluster-configuration设置为包含HADOOP_CONF_DIR的目录,只要你不在spark-env.sh或其他地方覆盖它。
顺便说一句,你确定你在HADOOP_CONF_DIR上做了一个导出,因为根据我的经验,它可以在Spark2.4.2上工作,所以如果你认为核心站点没有加载,它可能是因为你没有正确定义变量,或者你的spark-env.sh屏蔽了你之前的定义。
发布于 2019-06-25 23:57:05
几个选项
spark-defaults.conf中或在使用spark.hadoop.fs.defaultFS为应用程序创建的SparkConf对象中进行设置,并将其值设置为hdfs:///https://stackoverflow.com/questions/56756454
复制相似问题