Преобразование скрипта Python для запуска в Spark / Hadoop - PullRequest
0 голосов
/ 09 мая 2018

У меня есть скрипт Python, который в настоящее время работает на моем рабочем столе. Он принимает CSV-файл с примерно 25 миллионами строк (может быть, около 15 столбцов) и выполняет построчные операции.

Для каждой строки ввода создается несколько строк вывода. Затем результаты выводятся построчно в CSV-файл, в результате получается около 100 миллионов строк.

Код выглядит примерно так:

with open(outputfile,"a") as outputcsv:
    with open(inputfile,"r") as input csv:
        headerlist=next(csv.reader(csvfile)
        for row in csv.reader(csvfile):
            variable1 = row[headerlist.index("VAR1")]
            variableN = row[headerlist.index("VARN")]
            while calculations not complete:
                do stuff #Some complex calculations are done at this point
                outputcsv.write(stuff)

Сейчас мы пытаемся преобразовать скрипт для запуска через Hadoop, используя pyspark. Я понятия не имею, как даже начать. Я пытаюсь понять, как перебирать объект RDD, но не думаю, что это можно сделать.

Подходит ли построчное вычисление, подобное этому, для распределенной обработки?

1 Ответ

0 голосов
/ 09 мая 2018

Если вы хотите напрямую запустить скрипт, вы можете сделать это с помощью spark-submit:

spark-submit master local[*]/yarn other_parameters path_to_your_script.py 

Но я бы предложил использовать API-интерфейсы Spark, поскольку они просты в использовании. Это снизит накладные расходы на кодирование.

Сначала вы должны создать переменную сеанса спарк, чтобы вы могли получить доступ ко всем функциям спарка:

 spark = SparkSession
   .builder()
   .appName("SparkSessionZipsExample")
   .config("parameters", "value")
   .getOrCreate()

Далее, если вы хотите загрузить CSV-файл:

file = spark.read.csv("path to file")

Вы можете указать необязательные параметры, такие как заголовки, логическая схема и т. Д .:

file=spark.read.option("header","true").csv("path to your file")

'file' теперь будет фреймом данных pyspark.

Теперь вы можете написать конечный результат так:

file.write.csv("output_path")

Пожалуйста, обратитесь к документации: Документация искры для преобразований и другой информации.

...