spark

1.1pyspark

1.1pyspark和标准的spark框架的简单对比

  • | 功能 | Pyspark | Spark |
    | ————————— | ——————————— | ————————————— |
    | 底层语言 | python | Scala(JVM) |
    | 上层语言 | 仅python | python\java\Scala\R |
    | 集群化\分布式运行 | 不支持,仅支持单机 | 支持 |
    | 定位 | python库(客户端) | 标准框架(客户端和服务端) |
    | 是否可以Daemon运行 | No | YES |
    | 使用场景 | 本地开发调试python程序 | 生产环境集群化运行 |

1.2RDD的创建

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # coding:utf-8
    from pyspark import SparkConf, SparkContext

    if __name__ == '__main__':
    conf = SparkConf().setAppName("WordCount").setMaster("local[*]")
    sc = SparkContext(conf=conf)

    rdd = sc.parallelize([1, 2, 3, 4, 5, 6, 7, 8, 9])
    print("默认分区数", rdd.getNumPartitions())
    rdd1 = sc.parallelize([1, 2, 3, 4, 5, 6, 7, 8, 9],3)
    print("分区数", rdd.getNumPartitions())
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # coding:utf-8
    from pyspark import SparkConf, SparkContext

    if __name__ == '__main__':
    conf = SparkConf().setAppName("WordCount").setMaster("yarn")
    sc = SparkContext(conf=conf)
    # 读取文件
    file_rdd = sc.textFile("hdfs://10.8.16.19:8020/wdk/Word.txt",3)#第一参数表示文件路径,第二个参数表示分区数
    #读取小文件的API:wholeTextFile
    file_rdd = sc.wholeTextFile("hdfs://10.8.16.19:8020/wdk/Word.txt",3)#第一参数表示文件路径,第二个参数表示分区数
    # RDD操作
    words_rdd = file_rdd.flatMap(lambda x: x.split(" "))
    words = words_rdd.map(lambda y: (y, 1))
    result = words.reduceByKey(lambda a, b: a + b)
    # 输出结果
    print(result.collect())

1.3RDD算子

1.4常见的Transformation算子

  • map算子(将RDD的数据一条条的处理)

  • flatMap算子

  • reducebyKey

  • gruopBy

  • filter

  • distinct

  • union

  • join

  • intersection

  • glom

  • groupByKey

  • sortBy

  • sortByKey

1.5 常用 Action 算子

  • countBykey

  • collect

  • reduce

  • fold

  • first

  • take

  • top

  • count

  • takeSample

  • takeOrdered

  • foreach

  • saveAsTextFile

1.6SparkSql