2 lmj199582 lmj199582 于 2017.09.14 17:48 提问

SparkSql中读取hive中的表不能存在"."

val hiveDeptDF = sqlContext.read.table("emp_test.emp")
我要读取hive中emp_test中的emp表,报错不能包含“.”

Exception in thread "main" org.apache.spark.sql.AnalysisException: Specifying database name or other qualifiers are not allowed for temporary tables. If the table name has dots (.) in it, please quote the table name with backticks (`).;
at org.apache.spark.sql.catalyst.analysis.Catalog$class.getTableName(Catalog.scala:70)
at org.apache.spark.sql.catalyst.analysis.SimpleCatalog.getTableName(Catalog.scala:82)
at org.apache.spark.sql.catalyst.analysis.SimpleCatalog.lookupRelation(Catalog.scala:104)
at org.apache.spark.sql.DataFrameReader.table(DataFrameReader.scala:338)
at Hive2Rdbms$.main(Hive2Rdbms.scala:16)
at Hive2Rdbms.main(Hive2Rdbms.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

我加上反引号后,又显示找不到该表。

hive库本身没问题

3个回答

morgerton
morgerton   2017.09.14 18:15

http://www.cnblogs.com/zeppelin/p/6061887.html
第三个和你问题一样,你的反引号是不是加的不对?

iamaTraveler
iamaTraveler   2017.09.20 18:13

spark处理hive表用HiveContext

val sc = new SparkContext(conf)
val hiveContext = new HiveContext(sc)
hiveContext.setConf(getHiveConf(props.getProperty(HIVE_METASTORE_IP), props.getProperty(HIVE_METASTORE_PORT)))

wlyang666
wlyang666   2017.11.09 20:40

找不到表是元数据或者数据不在你想指定的路径,既然你说能找到hive表,那么可能是你的代码找不到元数据,看看你的hive-site.xml

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
SparkSQL读取Hive中的数据
注意红色字。 ---------------------- 由于我Spark采用的是Cloudera公司的CDH,并且安装的时候是在线自动安装和部署的集群。最近在学习SparkSQL,看到SparkSQL on HIVE。下面主要是介绍一下如何通过SparkSQL在读取HIVE的数据。 (说明:如果不是采用CDH在线自动安装和部署的话,可能需要对源码进行编译,使它能够
Spark SQL来读取现有Hive中的数据
Spark SQL主要目的是使得用户可以在Spark上使用SQL,其数据源既可以是RDD,也可以是外部的数据源(比如Parquet、Hive、Json等)。 Spark SQL的其中一个分支就是Spark on Hive,也就是使用Hive中HQL的解析、逻辑执行计划翻译、执行计划优化等逻辑,可以近似认为仅将物理执行计划从MR作业替换成了Spark作业。 本文就是来介绍如何通过Spark SQ
SparkSQL On Yarn with Hive,操作和访问Hive表
SparkSQL On Yarn with Hive,操作和访问Hive表
Spark查询Hive表时没有权限及无法找到表
用spark-submit执行python文件,进行hive表的操作时,会出现报错: java.lang.RuntimeException: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rwx------
SparkSQL操作Hive表数据
启动Hadoop:./sbin/start-all.sh启动Spark-Shell:./bin/spark-shell --master local[2] scala> spark.sql("show tables").show +--------+---------+-----------+ |database|tableName|isTemporary| +--------+--------
spark 读取hive 数据
1.启动spark-shell 需要加上mysql jar位置spark-shell --master local[2] --jars /Users/walle/app/mysql-connector-java-8.0.11.jar2. 简单sqlspark.sql("show databases").show spark.sql("show tables").show spark.sql("us...
Java实现SparkSQL查询Hive表数据
Java实现SparkSQL查询Hive表数据
spark-sql读取映射hbase数据的hive外部表
之前在业务处理中建立的一个hive映射hbase数据的外部表,通过hive查询成功,但是通过spark-sql去查询报了如下错误:Error: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Error in loading storage handler.org.apache.hadoop.
spark sql 使用hive作为数据源
本来是很简单的一件事,代码也不复杂,如下: 代码: public class LocationFromHiveDataSource {     @SuppressWarnings("deprecation")     public static void main(String[] args) {         // 首先还是创建SparkConf         SparkCo
Spark-sql 连接hive中遇到的问题
在使用spark-sql的时候发现,可以连接上hive并可以使用show tables的语句查询到表,但是后来尝试发现没法做其他更多的操作, 通过log信息发现,是metadata无法连接的问题,联想到前天在配置spark连接hive的时候见过一个启动metadata的命令 ./hive --service metadata & 于是猜想是因为没有把这个服务给启动,于是spark-sql虽