Спарк-Подать дату аргументы - PullRequest
0 голосов
/ 04 июля 2019

У меня есть вопрос о том, как передать две даты в качестве аргументов через spark-submit и должен использоваться кодом.

spark-submit gis.py '2019-03-04' '2019-03-07'

Использовали следующую искру отправки, дата - строка в таблице

from pyspark.sql import sparksession
from pyspark.sql import functions as F
from pyspark import HiveContext
hiveContext= HiveContext(sc)

start_date=arg1
end_dater =arg2

def UDF_df(i):
    print(i[0])
ABC2 = spark.sql(
    "select * From A where day ='{0}'".format(i[0])
)
Join = ABC2.join(
    Tab2,
     (
        ABC2.ID == Tab2.ID
    )
).select(
    Tab2.skey,
    ABC2.Day,
    ABC2.Name,
    ABC2.Description
)
Join.select(
    "Tab2.skey",
    "ABC2.Day",
    "ABC2.Name",
    "ABC2.Description"
).write.mode("append").format("parquet").insertinto("Table")

ABC=spark.sql(
    "select distinct day from A where day>= start_date and day<=end_date"
)
Tab2=spark.sql("select * from B where day is not null")
for in in ABC.collect():
    UDF_df(i)

Above code isn't taking arg 1 & 2 and is thus resulting in an error

Ответы [ 3 ]

1 голос
/ 04 июля 2019

если это скрипт на python, попробуйте с модулем sys.

import sys 
start_date=sys.argv[1]
end_date=sys.argv[2]
0 голосов
/ 04 июля 2019

Самый простой способ передать аргумент в скрипт сценария - это передать именованные аргументы с помощью модуля парсера args.

Do pip install argparse

Пример кода:

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('--date1', help='pass the first date')
parser.add_argument('--date2', help='pass the 2nd date')

args = parser.parse_args()

start_date=arg1.date1
end_dater =arg2.date2

Подробнее о парсере args: https://docs.python.org/2/library/argparse.html

0 голосов
/ 04 июля 2019

Попробуйте это -

spark-submit \
.
.
--conf "spark.service.user.startdate=2019-03-04" \
--conf "spark.service.user.enddate=2019-03-07"   \
.
.


In your code refer above config property as -

spark.sparkContext.getConf.get("spark.service.user.startdate")
spark.sparkContext.getConf.get("spark.service.user.enddate")

Надеюсь, это полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...