SparkSQL

SparkSQL_第1张图片

    想使用Dbeaver工具连接spark使用sparkSql访问Hive表,就要用到一个东西SparkThirdService;这东西就类似java jdbc连接,连接hive的hiveService2这种东西;

#进入Spark安装目录
sudo -u hive ./sbin/start-thriftserver.sh \
--hiveconf hive.server2.thrift.port=10016 \
--hiveconf hive.server2.thrift.bind.host=19x.xxx.xxx.xx \
--hiveconf spark.sql.warehouse.dir=hdfs://xxxx.com:8020/warehouse/tablespace/managed/hive \
--master yarn \
--executor-memory 4G \
--conf spark.sql.shuffle.partitions=10

DF

有行有列

DF = spark.createDataFrame(rdd,schema["name","age"])#表的描述信息

DF.printSchema()
DF.show(20,false)#展示数据数,是否对列进行截断

DF.createOrReplaceTempView("People")

表结构是由 structType类对象构建而成

from pyspark.sql.types import StructType,StringType,IntegerType

rdd = sc.textFile().map()

schema = StructType().add("name",StringType,nullable=False).\
             add("age",IntegerType,nullable=False)

createDataFrame(rdd,schema)

#法一
rdd.toDF("")
#法2
rdd.toDF(schema)

import pandas as pd

pdf = pd.DataFrame({"id":[1,2,3]})

df=spark.createDataFrame(pdf)
df.printSchema()
df.show()

#读取text,读取了某个格式表结构为某某且路径在某某的文件转换成DF
spark.read.format().schema().load()

#标准API读取json,json自带schema
spark.read().format().load()

##可以指定很多属性
spark.option()

#parquet内置schema,且以列为存储格式,序列化存储在文件中
spark.read().format("parquet").load("")


#SparkSql操作风格

#DSL
df.select().show()

#col object
name_col = df["name"]
df.select(nam_col).show()

df.filter("score <99").show()


#分组聚合
df.groupby("subject").count().show()
#注意groupby的返回值 Groupedata 不是DF 是有分组关系的数据结构


#全局表,可以跨越多个SparkSession使用 临时表只能在一个SS中使用
createGlobalTempView()



SparkSQL_第2张图片

用户平均分

df = spark.read.format("csv").option(encoding="utf-8").schema(schema).load("c:\\")

df.groupby("age").avg("rank").withColumns("avg("rank")",avg_rank)

分区数=tasks数,与设置并行度的参数互相独立 parallelism

数据去重API:

df.dropDuplicates(['指定需要去重的列']).show()

缺失值处理:

df.dropna(thresh==2,subset=[]) 删除存在空值的行,最少满足2个有效列,subset限定列的范围

df.fillna("指定内容的填充")

import pyspark.sql.functions as F df2 = df.select([ F.concat_ws(",", c).alias(c)

写出

df.write.mode("overwrite").format().save()

SparkSQL_第3张图片

RDD的执行流程: RDD->DAGScheduler->TaskScheduler->Worker

 SparkSQL_第4张图片

SparkSQL_第5张图片

 

你可能感兴趣的:(大数据,spark)