cdh使用sparksql_CDH Spark SQL

Spark SQL允许您使用SQL或使用DataFrame API查询Spark程序内的结构化数据。

有关Spark SQL的详细信息,请参阅Spark SQL和DataFrame指南。

继续阅读:

SQLContext和HiveContext

所有Spark SQL功能的入口点是 SQLContext 类或其后代之一。你创建一个 SQLContext 从一个 SparkContext 。使用SQLContext ,您可以从RDD,Hive表或数据源创建DataFrame。

要在Spark应用程序中使用存储在Hive或Impala表中的数据,请构建一个 HiveContext ,它继承自SQLContext 。使用 HiveContext ,您可以访问Hive或Impala表等代表的Metastore数据库。

注意:

Hive和Impala表和相关的SQL语法在大多数方面是可以互换的。因为Spark使用底层Hive基础架构,所以使用Spark SQL您可以使用HiveQL语法编写DDL语句,DML语句和查询。对于交互式查询性能,可以通过Impala使用impala-shell或Impala JDBC和ODBC接口访问相同的表。

如果你使用 spark-shell , 一个 HiveContext 已经为你创建,并作为 sqlContext 变量。

如果你使用 spark-submit ,在程序开始时使用如下代码:

Python:

from pyspark import SparkContext, HiveContext

sc = SparkContext(appName = "test")

sqlContext = HiveContext(sc)

Spark应用程序提交的主机 或 spark-shell or pyspark 运行的主机,运行必须具有在Cloudera Manager 中定义的Hive 网关角色以及部署的客户端配置。

当Spark作业访问Hive视图时,Spark必须有权读取底层Hive表中的数据文件。目前,Spark不能使用基于列或者where子句。如果Spark没有底层数据文件所需的权限,则针对视图的SparkSQL查询将返回空结果集,而不是错误。

将文件查询到DataFrame中

如果数据文件位于Hive或Impala表之外,则可以使用SQL将JSON或Parquet文件直接读取到DataFrame中:

JSON:

df = sqlContext.sql("SELECT * FROM json.`input dir`")

Parquet:

df = sqlContext.sql("SELECT * FROM parquet.`input dir`")

Spark SQL示例

<
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值