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
Scala 尝试从我的电脑访问远程HDFS群集_Scala_Apache Spark_Hadoop_Cloudera - Fatal编程技术网

Scala 尝试从我的电脑访问远程HDFS群集

Scala 尝试从我的电脑访问远程HDFS群集,scala,apache-spark,hadoop,cloudera,Scala,Apache Spark,Hadoop,Cloudera,我正在尝试从本地pc(win7)访问远程cloudera HDFS群集。正如cricket_007在上一次演讲中所建议的那样,我做了以下几件事: 1) 我创建了下一个spark会话 val spark = SparkSession .builder() .appName("API") .config("spark.sql.warehouse.dir", "/user/hive/warehouse") .master("local") .enableHiveSupport() .getOrCr

我正在尝试从本地pc(win7)访问远程cloudera HDFS群集。正如cricket_007在上一次演讲中所建议的那样,我做了以下几件事: 1) 我创建了下一个spark会话

  val spark = SparkSession
.builder()
.appName("API")
.config("spark.sql.warehouse.dir", "/user/hive/warehouse")
.master("local")
.enableHiveSupport()
.getOrCreate()
2) 我从群集复制了下一个文件:

core-site.xml
hdfs-site.xml
hive-site.xml
mapred-site.xml
yarn-site.xml
并将变量HADOOP_CONF_DIR配置为包含它们的目录

3) 我下载了spark并配置了变量spark\u HOME和spark\u CONF\u DIR

4) 我下载了winutils并将其设置在path变量中。我将/tmp/hive的权限更改为777

当master设置为local时,我只看到默认数据库,这意味着它不能识别xml文件。当设置为“纱线”时,屏幕被卡住,看起来我的电脑正在思考,但这需要花费很多时间,而且没有结束。当我使用local时,我还使用了以下行:
.config(“hive.metastore.uris”thrift://MyMaster:9083)
一切正常


知道为什么会这样吗?为什么本地只能看到默认数据库?为什么当主机设置为纱线时,我无法连接,它被卡住了?为什么当我添加配置行时,它只在局部解决了我的问题?

AFAIK
HADOOP\u CONF\u DIR
被Spark launcher脚本(例如
Spark shell
Spark submit
)使用,它只是将该目录放在Java类路径的顶部,以便HADOOP库找到它们的配置。如果不使用脚本,可以自己应用类路径技巧,或者直接将文件转储到Spark conf dir中。每当Hadoop libs找不到任何conf文件时,它们会自动恢复为硬编码的默认值。这意味着,对于Hive,创建一个由本地Derby数据库支持的“沙盒”元存储。我猜您的工作目录包含一个
derby.log
和一个
metastore\u db
目录…我将xml文件放在SPARK\u CONF目录中,但它仍然无法识别文件,并且只有默认数据库可用。我检查了文件derbly.log和metasote目录,发现它加载了一个本地数据库。您是否将该目录插入了类路径中,例如在属性
spark.driver.extraClassPath
中?spark\u CONF目录应该在我的类路径中?在项目目录中?