Apache spark Spark 1.5.1不使用hive jdbc 1.2.0

Apache spark Spark 1.5.1不使用hive jdbc 1.2.0,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我尝试在独立模式下使用spark 1.5.1和Hive1.2.0JDBC版本执行配置单元查询 以下是我的代码: private static final String HIVE_DRIVER = "org.apache.hive.jdbc.HiveDriver"; private static final String HIVE_CONNECTION_URL = "jdbc:hive2://localhost:10000/idw"; private static final SparkConf

我尝试在独立模式下使用spark 1.5.1和Hive1.2.0JDBC版本执行配置单元查询

以下是我的代码:

private static final String HIVE_DRIVER = "org.apache.hive.jdbc.HiveDriver";
private static final String HIVE_CONNECTION_URL = "jdbc:hive2://localhost:10000/idw";
private static final SparkConf sparkconf = new SparkConf().set("spark.master", "spark://impetus-i0248u:7077").set("spark.app.name", "sparkhivesqltest")
                .set("spark.cores.max", "1").set("spark.executor.memory", "512m");

private static final JavaSparkContext sc = new JavaSparkContext(sparkconf);
private static final SQLContext sqlContext = new SQLContext(sc);
public static void main(String[] args) {                
    //Data source options
    Map<String, String> options = new HashMap<String, String>();
    options.put("driver", HIVE_DRIVER);
    options.put("url", HIVE_CONNECTION_URL);
    options.put("dbtable", "(select * from idw.emp) as employees_name");
    DataFrame jdbcDF =    sqlContext.read().format("jdbc").options(options).load();    
    }
有人能帮我吗? 如果有人将spark 1.5.1与hive jdbc一起使用,那么您能告诉我适用于spark 1.5.1的hive的兼容版本吗


提前谢谢你

据我所知,不幸的是,在上游修复之前,您在使用jdbc连接器方面运气不佳;在这种情况下,“不支持的方法”不仅仅是版本不匹配,而且在中没有显式实现,即使您查看了或,它仍然没有实现:

public boolean isSigned(int column) throws SQLException {
  throw new SQLException("Method not supported");
}
查看Spark callsite,
isSigned
在中以及中的
resolveTable
期间被调用

也就是说,这个“问题”仍然存在的真正原因很可能是,当与Hive交互时,您需要直接连接到Hive元存储,而不需要使用jdbc连接器;有关如何执行此操作,请参阅文档。本质上,您希望将Spark视为蜂巢的平等/替代品,而不是蜂巢的消费者


这样,您所要做的就是将
hive site.xml
添加到Spark的
conf/
目录中,并确保
lib\u managed/jars
下的
datanucleus
JAR可供所有Spark执行器使用,然后Spark直接与Hive metastore对话获取模式信息,并直接从您的HDF中获取数据,这种方式适合于良好的并行RDD。

即使在2.3版本中,现在也不支持它。让Spark访问Hive元存储的问题是细粒度的访问控制。我们该如何处理?
public boolean isSigned(int column) throws SQLException {
  throw new SQLException("Method not supported");
}