2月7日

sparksql 

 

今天开始学习sparksql,我害怕它是基于hive的如果要用到我的hive的话 我觉得难度不小,由于我是笔记本我的IP地址是一直在变化的,我害怕连接不上hive

 

 

Dataframe就是带有schema的RDD

 

 Dataframe和DataSet的区别:

Dataframe是Dataset的特列,DataFrame=Dataset[Row] ,所以可以通过as方法将Dataframe转换为Dataset。Row是一个类型,跟Car、Person这些的类型一样,所有的表结构信息都用Row来表示。

DataSet是强类型的。比如可以有Dataset[Car],Dataset[Person].

 

 

编程接口:

 

在SparkSQL中的编程模型不是使用SparkContext作为程序的入口,但是依赖SparkContext;在spark2.0之前使用SQLContext和HiveContext作为程序入口。在Spark2.0之后我们统一使用SparkSession作为编程入口。

 

 val session = SparkSession.builder().master("local[*]").appName("demo").getOrCreate()
  val data: DataFrame = session.read.json("src/people.json")
  //显示所有数据:show():属于DataFrame中的一个算子,主要用于输出:
 
data.show()   //data.select("age").show()
  //打印schema信息:
 
data.printSchema()
}


Spark-Shell命令式交互行中:
sc: 是SparkContext的实例;
spark: 是SparkSession的实例;
scala> spark.read.json("/home/data/people.json")
res44: org.apache.spark.sql.DataFrame = [age: bigint, name: string]
 
scala> res44.show
+---+---------+
|age|     name|
+---+---------+
| 38|zhuang-ge|
| 30|  zhou-ge|
| 19|   qun-ge|
| 21|   tao-ge|
| 22|  sai-jie|
| 25| huan-jie|
| 22|  zhou-ge|
| 17|    da-ge|
+---+---------+
 
posted @ 2022-02-07 15:24  不咬牙  阅读(82)  评论(0)    收藏  举报