我正在尝试使用Spark HiveContext访问配置单元数据。我写了查询“show databases”。但我得到的回应是默认的。
好像我的程序无法找到放置在我项目的conf /文件夹中的hive-site.xml文件,因此在我的项目目录中创建了一个metastore_db。
这是我尝试做的示例代码:
private static SparkConf sparkConf = new SparkConf().setAppName("JavaSparkSQL").setMaster("local[*]");
private static JavaSparkContext ctx = new JavaSparkContext(sparkConf);
public static boolean runQuery() {
JavaHiveContext sqlContext = new org.apache.spark.sql.hive.api.java.JavaHiveContext(ctx);
List<Row> rows=sqlContext.sql("show databases").collect();
for(Row row:rows){
String i=row.getString(0);
System.out.println("Response: "+i);
}
return true;
}
我没有做火花提交。我只是调用runQuery()。如何在此代码中指定hive-site.xml的路径?或者还有其他方法从蜂巢中读取数据吗?
答案 0 :(得分:0)
确保在.bash_profile(如果在开发中)或用于设置环境变量的任何文件中设置了必要的Spark Environment变量:
export SPARK_HOME=CHANGEME!!!
export SPARK_MASTER_IP=127.0.0.1
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=9080
export SPARK_LOCAL_DIRS=$SPARK_HOME/../work
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=1G
export SPARK_WORKER_INSTANCES=2
export SPARK_DAEMON_MEMORY=384m
... ect ect ect
可能有一种方法可以使用SparkConf setter设置所有这些,但是我无法使这些工作。