我正在使用HiveContext和SparkSQL,我正在尝试连接到远程Hive Metastore,设置hive Metastore的唯一方法是在类路径中包含hive-site.xml(或将其复制到/ etc/spark/CONF /).
有没有办法在不包含hive-site.xml的情况下以编程方式在java代码中设置此参数?如果是这样,使用什么是Spark配置?
我一直在尝试使用sqlContext.read.format("jdbc").options(driver="org.apache.hive.jdbc.HiveDriver")Hive表进入Spark而没有任何成功.我做过研究并阅读如下:
Spark 1.5.1无法使用hive jdbc 1.2.0
http://belablotski.blogspot.in/2016/01/access-hive-tables-from-spark-using.html
我使用了最新的Hortonworks Sandbox 2.6并向社区询问了同样的问题:
我想做的事情非常简单pyspark:
df = sqlContext.read.format("jdbc").options(driver="org.apache.hive.jdbc.HiveDriver", url="jdbc:hive2://localhost:10016/default", dbtable="sample_07",user="maria_dev", password="maria_dev").load()
Run Code Online (Sandbox Code Playgroud)
这给了我这个错误:
17/12/30 19:55:14 INFO HiveConnection: Will try to open client transport with JDBC Uri: jdbc:hive2://localhost:10016/default
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/hdp/current/spark-client/python/pyspark/sql/readwriter.py", line 139, in load
return self._df(self._jreader.load())
File "/usr/hdp/current/spark-client/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 813, in __call__
File "/usr/hdp/current/spark-client/python/pyspark/sql/utils.py", line 45, in deco
return f(*a, **kw)
File "/usr/hdp/current/spark-client/python/lib/py4j-0.9-src.zip/py4j/protocol.py", line 308, in get_return_value
py4j.protocol.Py4JJavaError: An error …Run Code Online (Sandbox Code Playgroud) 我在ubuntu上安装了hadoop 2.8.1,然后安装了spark-2.2.0-bin-hadoop2.7.我使用了spark-shell并创建了表格.我再次使用beeline并创建表格.我观察到有三个不同的文件夹被创建名为spark-warehouse:
1- spark-2.2.0-bin-hadoop2.7/spark-warehouse
2- spark-2.2.0-bin-hadoop2.7/bin/spark-warehouse
3- spark-2.2.0-bin-hadoop2.7/sbin/spark-warehouse
什么是火花仓库,为什么这些创造了很多次?有时我的火花壳和直线显示不同的数据库和表格,有时它显示相同.我没有得到正在发生的事情?
此外,我没有安装配置单元,但我仍然可以使用beeline,我也可以通过java程序访问数据库.蜂巢是如何进入我的机器的?请帮我.我是新手,通过在线教程激发并安装它.
下面是我用来通过JDBC连接apache spark的java代码:
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(1);
}
Connection con = DriverManager.getConnection("jdbc:hive2://10.171.0.117:10000/default", "", "");
Statement stmt = con.createStatement();
Run Code Online (Sandbox Code Playgroud) 我可以从安装了apache spark的同一群集中的hive服务器加载数据.但是如何从远程配置单元服务器将数据加载到数据帧中.蜂巢jdbc连接器是唯一的选择吗?
任何建议我怎么能这样做?