在pycharm中编写如下代码:
from pyspark import SparkConf,SparkContext
def MyPartitioner(key): #自定义分区函数
print('MyPartitioner is running')
print('the key is %d'%key)
return key%10 #设定分区取值方式
def main():
print('the main function is running')
conf = SparkConf.setMaster('local').setAppName('MyApp') #设置本地运行就行
sc = SparkContext(conf=conf)
data = sc.parallelize(range(10),5) #最初是5个分区
data.map( lambda x:(x,1)) \
.partitionBy(10,MyPartitioner) \ #设置10个分区
.map(lambda x:x(0)) \
.saveAsTextFile('file:///home/hadoop/test') #文件夹不用新建,自动会生成test文件夹,新建会报错 directory already exists
if __name__=='__main__':
main()
将py文件上传至linux的spark节点
提交运行
spark-submit partitionTest.py
目录下会生成一个test文件夹,如果生成了10个分区文件,那就证明成功了