Я хочу, чтобы моя программа pyspark использовала функцию. Я сделал все под основной функцией, а затем попытался вызвать эту основную функцию. Но это не работает. У меня есть два фрейма данных.
+----+----+----+
|id |name|marks|
+----+----+----+
| 1| A| 1|
| 1| A| 2|
| 1| A| 3|
| 2| B| 3|
| 2| B| 5|
+----+----+----+
+----+----+----+
|id. |sub |mrks|
+----+----+----+
| 1| A| 10|
| 1| B| 20|
| 1| C| 30|
| 2| B| 35|
| 2| C| 57|
+----+----+----+
Моя цель - прочитать фрейм данных и сохранить его в моем локальном
Мой код -
from __future__ import division,print_function
from pyspark.sql import functions as F
from pyspark.sql import types as T
import numpy as np
from pyspark.ml.feature import HashingTF, IDF, Normalizer
from collections import defaultdict as D
import datetime
from collections import Counter
import sys
import math
import pyspark
import time
import sys
from datetime import datetime
from math import exp
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('spark').config("spark.sql.session.timeZone", "GMT").getOrCreate()
def main(input_file, output_path, step):
if step == 1:
#read 1st dataframe
df1 = spark.read.parquet(input_file)
df1.write.parquet(output_path \
,mode="overwrite", compression="gzip")
elif step == 2:
df2 = spark.read.parquet(input_file)
df2.write.parquet(output_path \
,mode="overwrite", compression="gzip")
if __name__ == '__main__':
input_file = sys.argv[0]
output_path = sys.argv[1]
step = sys.argv[2]
input_file = "/Users/pallavi/Documents/project/test_data1.parquet/"
output_path = "/Users/pallavi/Documents/project/output/"
step = "2"
main(input_file, output_path, step)