spark创建rdd有哪几种方式
时间: 2023-05-30 10:06:12 浏览: 158
Spark核心之弹性分布式数据集RDD
5星 · 资源好评率100%
Spark创建RDD的方式有以下几种:
1. 从一个已有的集合或序列中创建RDD:通过SparkContext.parallelize()方法或SparkContext.makeRDD()方法来创建RDD。示例代码如下:
```python
from pyspark import SparkContext
sc = SparkContext("local", "RDD Example")
data = [1, 2, 3, 4, 5]
rdd = sc.parallelize(data)
```
2. 通过读取外部数据源来创建RDD:通过SparkContext.textFile()或SparkContext.wholeTextFiles()方法来读取外部数据源创建RDD。示例代码如下:
```python
from pyspark import SparkContext
sc = SparkContext("local", "RDD Example")
text_file = sc.textFile("/path/to/textfile")
```
3. 通过转换已有的RDD来创建新的RDD:通过对已有的RDD进行转换操作,生成新的RDD。RDD的转换操作包括map、filter、flatMap、union等等。示例代码如下:
```python
from pyspark import SparkContext
sc = SparkContext("local", "RDD Example")
data = [1, 2, 3, 4, 5]
rdd = sc.parallelize(data)
# 转换操作
squared_rdd = rdd.map(lambda x: x*x)
```
4. 通过从存储系统中读取数据创建RDD:通过SparkContext.newAPIHadoopFile()或SparkContext.hadoopFile()方法来从存储系统(如HDFS、S3等)中读取数据创建RDD。示例代码如下:
```python
from pyspark import SparkContext, SparkConf
from pyspark.rdd import PortableDataStream
conf = SparkConf().setAppName('HadoopRDD')
sc = SparkContext(conf=conf)
rdd = sc.newAPIHadoopFile(
path='/path/to/data',
inputFormatClass='org.apache.hadoop.mapreduce.lib.input.TextInputFormat',
keyClass='org.apache.hadoop.io.LongWritable',
valueClass='org.apache.hadoop.io.Text')
```
5. 通过并行化已有的RDD来创建新的RDD:通过对已有的RDD进行并行化操作,生成新的RDD。RDD的并行化操作包括repartition、coalesce等等。示例代码如下:
```python
from pyspark import SparkContext
sc = SparkContext("local", "RDD Example")
data = [1, 2, 3, 4, 5]
rdd = sc.parallelize(data)
# 并行化操作
repartitioned_rdd = rdd.repartition(2)
```
阅读全文