【发布时间】:2017-08-07 11:28:07
【问题描述】:
以下是创建 HIVE 表并在其中加载数据的简单代码。
import java.util.Properties
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import org.apache.spark.sql.SQLContext
import sqlContext.implicits._
val conf = new SparkConf().setAppName("HIVE_Test").setMaster("local").set("spark.executor.memory","1g").set("spark.driver.allowMultipleContexts", "true");
val sc = new SparkContext(conf);
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc);
sqlContext.sql("CREATE TABLE test_amit_hive12(VND_ID INT,VND_NM STRING,VND_SHORT_NM STRING,VND_ADR_LN_1_TXT STRING,VND_ADR_LN_2_TXT STRING,VND_CITY_CD STRING,VND_ZIP_CD INT,LOAD_TS FLOAT,UPDT_TS FLOAT, PROMO_STTS_CD STRING, VND_STTS_CD STRING)");
sqlContext.sql("LOAD DATA LOCAL INPATH 'path_to/amitesh/part.txt' INTO TABLE test_amit_hive12");
exit()
我有 2 个查询::
1) 在“创建表”中,我对表名进行了硬编码,但代码如何理解文件的分隔符?当我们通过 HIVE 提示创建一个 HIVE 表时,我们确实写了以下几行
FIELDS TERMINATED BY ‘’
LINES TERMINATED BY ‘’
那么,我们在使用 Spark/Scala 时不需要这样做吗?
2) 通过 Spark-shell 执行代码时,出现以下错误::
ERROR KeyProviderCache: Could not find uri with key [dfs.encryption.key.provider.uri] to create a keyProvider !!
res1: org.apache.spark.sql.DataFrame = [result: string]
我在 stackoverflow 上找到了一个帖子,但没有得到答复。在其他网站上,我发现它是 Hadoop 2.7.1 的一个错误。我检查了我的,我有 2.7.2。那么,我的版本中存在的错误的可能性是什么。我正在使用 IBM 的 BigInsight。以下是我的版本详情
Hadoop 2.7.2-IBM-12
但是,有没有人可以帮助我解决这个问题,我必须有一个非常有力的证据来向我的经理证明这是一个错误。
以下是人们说错误是错误的链接之一
【问题讨论】:
标签: scala hadoop apache-spark hive apache-spark-sql