我正在尝试提交用python编写的作业来激发。
首先我要解释一下我的设置,我在一台正在执行的Windows服务器(40核和1TB或RAM)上安装了一个spark 2.3.0节点,当然后面的目标是创建一个更少的集群强大的节点,但现在我正在测试那里的一切:)
我的第一个测试包括获取一组表格CSV文件(每个40-100GB),拆分它们,然后将拆分结果保存在其他地方。
我一直使用jupyter notebook
在pyspark
上制作原型(自动创建一个sparkContext。
现在,我想创建一个spark_test.py脚本,其中包含我在main中的原型体,我打算将其发送到spark-submit。
事情是,我的脚本的处理部分似乎根本不起作用。在这里你有我的剧本的主体:
from pyspark import SparkContext, SparkConf
def main():
# Create spark context
spark_conf = SparkConf().setAppName('GMK_SPLIT_TEST')
print('\nspark configuration: \n%s\n' % spark_conf.toDebugString())
sc = SparkContext(conf=spark_conf)
# Variables definition
partitionings_number = 40
file_1 = r'D:\path\to\my\csv\file.csv'
output_path = r'D:\output\path'
# Processing 1
rdd = sc.parallelize(range(1000))
print(rdd.mean())
# Processing 2
sdf = spark.read.option('header','true').csv(file_1, sep=';', encoding='utf-8')
sdf_2 = sdf.repartition(partitionings_number, 'Zone[3-2]')
sdf_2.write.saveAsTable('CSVBuckets', format='csv', sep=';', mode='overwrite', path=output_path, header='True')
if __name__ == '__main__':
main()
现在,我有更多疑虑。 spark-submit是否会尝试连接到已经运行的spark实例,或者它会自动初始化一个? 我试过了:
spark-submit --master local[20] --driver-memory 30g
如果处理1,则上述命令似乎有效,但处理2
则无效spark-submit --master spark:\\127.0.0.1:7077 --driver-memory 30g
上面的命令引发了spark contex初始化的异常。是因为我没有运行任何火花实例吗?
为了完成处理2,我如何通过python作业传递file_1?我试过 - 没有成功的文章。
感谢你们的时间!