spark程序找不到hive-site.xml文件

时间:2015-09-08 07:32:06

标签: hive apache-spark-sql

我正在尝试使用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的路径?或者还有其他方法从蜂巢中读取数据吗?

1 个答案:

答案 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设置所有这些,但是我无法使这些工作。