Spark SQL - Hive表
2018-12-20 16:55 更新
Hive与Spark库捆绑为HiveContext,它继承自SQLContext。 使用HiveContext,您可以在HiveMetaStore中创建和查找表,并使用HiveQL在其上写入查询。 没有现有Hive部署的用户仍然可以创建HiveContext。 当未由hive-site.xml配置时,上下文会自动在当前目录中创建名为metastore_db的元数据库和名为warehouse的文件夹。
首先,我们必须启动Spark Shell。 使用HiveTables意味着我们正在处理Hive MetaStore。 因此,系统将自动创建用于存储表数据的仓库。 因此,最好在超级用户上运行Spark Shell。 请参考以下命令。
参考以下案例使用Hive表完成雇员记录。 所有记录的数据都在名为employee.txt的文本文件中。 这里,我们将首先初始化HiveContext对象。 使用它,我们将创建一个表,使用HiveQL语言将雇员记录数据加载到其中,并对其应用一些查询。
employee.txt - 将其放在spark-shell正在运行的当前目录中。
1201, satish, 25 1202, krishna, 28 1203, amith, 39 1204, javed, 23 1205, prudvi, 23启动Spark Shell
首先,我们必须启动Spark Shell。 使用HiveTables意味着我们正在处理Hive MetaStore。 因此,系统将自动创建用于存储表数据的仓库。 因此,最好在超级用户上运行Spark Shell。 请参考以下命令。
$ su password: #spark-shell scala>
创建SQLContext对象
使用以下命令将HiveContext初始化到Spark Shell中。
scala> val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
使用HiveQL创建表
使用以下命令创建名为employee的表,其字段为id,name和age。这里,我们使用HiveQL语法的Create语句。
scala> sqlContext.sql("CREATE TABLE IF NOT EXISTS employee(id INT, name STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'")
使用HiveQL将数据加载到表中
使用以下命令将员工记录数据加载到员工表中。如果成功执行,给定的员工记录将按照模式存储在 employee 中。
scala> sqlContext.sql("LOAD DATA LOCAL INPATH 'employee.txt' INTO TABLE employee")
从表中选择字段
我们可以在表中执行任何类型的SQL查询。使用以下命令可以使用HiveQL select查询获取所有记录。
scala> val result = sqlContext.sql("FROM employee SELECT id, name, age")要显示记录数据,请对结果DataFrame调用show()方法。
scala> result.show()
输出
<console>:26, took 0.157137 s +------+---------+----+ | id | name |age | +------+---------+----+ | 1201 | Satish | 25 | | 1202 | Krishna | 28 | | 1203 | amith | 39 | | 1204 | javed | 23 | | 1205 | prudvi | 23 | +------+---------+----+
以上内容是否对您有帮助:
更多建议: