我正在我的本地计算机上开发Spark作业,然后在集群上部署以进行全面运行。我创建了一个其他人在代码中使用的公共库。在这段代码中,我必须使用HiveContext来做Spark SQL,许多人建议提供更好的sql解析器。我没有管理员访问我的机器,所以我无法在本地模式下创建HiveContext。使用jar共享公共代码,因此我们无法在HiveContext和SQLContext之间手动切换以进行测试。无论如何,我可以创建一个公共上下文,它将在本地模式下作为SQLContext运行,并在集群模式下基于某些参数运行HiveContext。
这是我在尝试以本地模式创建HiveContext时遇到的错误。
17/03/16 13:11:53 INFO ObjectStore:设置MetaStore对象引脚 课程 hive.metastore.cache.pinobjtypes ="表,StorageDescriptor,SerDeInfo,分区,数据库,类型,FieldSchema,订单" 17/03/16 13:11:54 INFO数据存储:课程 " org.apache.hadoop.hive.metastore.model.MFieldSchema"被标记为 "嵌入仅"所以没有自己的数据存储表。 17/03/16 13:11:54 INFO数据存储:课程 " org.apache.hadoop.hive.metastore.model.MOrder"被标记为 "嵌入仅"所以没有自己的数据存储表。 17/03/16 13:11:55 INFO数据存储:课程 " org.apache.hadoop.hive.metastore.model.MFieldSchema"被标记为 "嵌入仅"所以没有自己的数据存储表。 17/03/16 13:11:55 INFO数据存储:课程 " org.apache.hadoop.hive.metastore.model.MOrder"被标记为 "嵌入仅"所以没有自己的数据存储表。 17/03/16 13:11:55 INFO MetaStoreDirectSql:使用直接SQL,底层数据库是 DERBY 17/03/16 13:11:55 INFO ObjectStore:初始化的ObjectStore 17/03/16 13:11:55 WARN ObjectStore:找不到版本信息 metastore。 hive.metastore.schema.verification未启用 记录模式版本1.2.0 17/03/16 13:11:56 WARN ObjectStore: 无法获取数据库缺省值,返回NoSuchObjectException 17/03/16 13:11:56 INFO HiveMetaStore:在Metastore中添加了admin角色 17/03/16 13:11:56 INFO HiveMetaStore:在Metastore中增加了公共角色 17/03/16 13:11:56 INFO HiveMetaStore:管理员角色中没有添加任何用户, 因为配置是空的17/03/16 13:11:56 INFO HiveMetaStore:0: get_all_databases 17/03/16 13:11:56 INFO审计: ugi = ip = unknown-ip-addr cmd = get_all_databases 17/03/16 13:11:56 INFO HiveMetaStore:0:get_functions:db = default pat = * 17/03/16 13:11:56 INFO审计:ugi = ip = unknown-ip-addr cmd = get_functions:db = default pat = * 17/03/16 13:11:56 INFO数据存储:课程 " org.apache.hadoop.hive.metastore.model.MResourceUri"被标记为 "嵌入仅"所以没有自己的数据存储表。例外 线程"主要" java.lang.RuntimeException:java.lang.RuntimeException: HDFS上的root scratch dir:/ tmp / hive应该是可写的。当前 权限是:rw-rw-rw-at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522) 在 。org.apache.spark.sql.hive.client.ClientWrapper(ClientWrapper.scala:204) 在 org.apache.spark.sql.hive.client.IsolatedClientLoader.createClient(IsolatedClientLoader.scala:238) 在 org.apache.spark.sql.hive.HiveContext.executionHive $ lzycompute(HiveContext.scala:218) 在 org.apache.spark.sql.hive.HiveContext.executionHive(HiveContext.scala:208) 在 org.apache.spark.sql.hive.HiveContext.functionRegistry $ lzycompute(HiveContext.scala:462) 在 org.apache.spark.sql.hive.HiveContext.functionRegistry(HiveContext.scala:461) 在 。org.apache.spark.sql.UDFRegistration(UDFRegistration.scala:40) 在org.apache.spark.sql.SQLContext。(SQLContext.scala:330)at at org.apache.spark.sql.hive.HiveContext。(HiveContext.scala:90)at at 。org.apache.spark.sql.hive.HiveContext(HiveContext.scala:101) 在SparkTest $ .main(SparkTest.scala:11)at SparkTest.main(SparkTest.scala)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:498)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 引起:java.lang.RuntimeException:root scratch目录:/ tmp / hive 在HDFS上应该是可写的。目前的权限是:rw-rw-rw-at org.apache.hadoop.hive.ql.session.SessionState.createRootHDFSDir(SessionState.java:612) 在 org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:554) 在 org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:508) ......还有17个