spark官方文档翻译版

1. 快速开始

本教程提供了使用Spark的快速介绍。我们将首先通过Spark的交互式shell (在Python或Scala环境中) 介绍APl,然后展示如何用Java、Scala和Python编写应用程序。

跟随本指南,首先,从Spark网站下载Spark的打包发行版。由于我们不使用HDFS,您可以下载适用于任何版本Hadoop的软件包。

请注意,在Spark2.0之前,Spark的主要编程接口是弹性分布式数据集 (RDD)(Resilient Distributed Dataset)。在Spark2.0之后,RDD被Dataset所取代,Dataset像RDD一样是强类型的,但在hood(底层)下有更丰富的优化。仍然支持RDD接口,您可以在RDD编程指南中获得更详细的参考。但是,我们强烈建议您切换到使用Dataset,它比RDD有更好的性能。请参阅SOL编程指南以获取有关Dataset的更多信息。

1.1. 使用spark shell进行交互式分析

1.1.1. 基础(basics)

spark的shell提供了一个简单的方式去学习API,同时也是一个强大的交互式数据分析工具。它可以在Scala (运行在JVM上,因此是使用现有Java库的好方法)或Python中使用。通过在Spark目录中运行以下命令来启动它:

./bin/pyspark

或者,如果PySpark已经使用pip安装在你当前的环境中的话,直接用这个命令:

pyspark

Spark的主要抽象是一个名为Dataset的分布式项目集合。数据集可以从Hadoop InputFormat(如HDFS文件)或通过转换其他数据集来创建。由于Python的动态特性,我们不需要在Python中强类型的数据集。因此,Python中的所有数据集都是Dataset[Row],我们称之为DataFrame,与Pandas和R中的数据框架概念保持一致,让我们根据Spark源目录中的README文本创建一个新的DataFrame:

>>> textFile=spark.read.text("README.md")

你可以通过调用某些操作从DataFrame中直接得到值,或者转换DataFrame得到一个新的DataFrame。更多的细节请阅读API文档。

>>> textFile.count() # Number of rows in this DataFrame
126
>>> textFile.first() # First row in this DataFrame
Row(value=u'# Apache Spark')

现在让我们转化这个DataFrame为一个新的DataFrame,我们调用filter去返回一个新的DataFrame,包含文件中行的子集。

>>> linesWithSpark=textFile.filter(textFile.value.contains("Spark"))

我们可以将转换和操作连接在一起:

>>> textFile.filter(textFile.value.contains("Spark")).count() # 有多少行包含有“Spark”?
15

1.1.2. 更多的Dataset操作

Dataset操作和转换可以实现更复杂的计算,假设我们想找到更多单词的行:

>>> from pyspark.sql import functions as sf
>>> textFile.select(sf.size(sf.split(textFile.value,"\s+")).name("numWords")).agg(sf.max(sf.col("numWords"))).collect()
[Row(max(numWords)=15)]

首先将一行映射到一个整数值并将其别名为“numWords”,创建一个新的 DataFrame。在该DataFrame 上调用 agg 来查找最大字数。 select和 agg 的参数都是 Column,我们可以使用df.colName 从 DataFrame 中获取列。我们还可以导入 pyspark.sql.functions,它提供了很多方便的函数来从旧列构建新列.

一种常见的数据流模式是由 Hadoop 推广的MapReduce。 Spark可以轻松实现MapReduce流程:

>>> wordCounts=textFile.select(sf.explode(sf.split(textFile.value,"\s+")).alias("word")).groupBy("word").count()

在这里,我们使用 select 中的爆炸函数(the explode function),将行数据集转换为单词数据集,然后结合 groupBy 和 count来计算文件中每个单词的数量,作为 2 列的DataFrame:“word”和“count”。要在我们的 shell 中收集字数统计,我们可以调用collect:

>>> wordCount.collect()
[Row(word=u'online', count=1), Row(word=u'graphs', count=1), ... ]

1.1.3. 缓存

!!!---------持续更新中-----------!!!

2. RDDs、累加器(accumulators)和广播变量(broadcast variables)

3. SQL、数据框架(DataFrames)和数据集(datasets)

4. 结构化流(structured streaming)

5. spark流(spark streaming)

6. MLlib

7. GraphX

8. SparkR

9. PySpark

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值