Как выполнять искровые sql-запросы из подпрограмм, которые не являются частью драйвера программы?Как выполнить запрос искры sql из функции карты (Python)?
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
def doWork(rec):
data = SQLContext.sql("select * from zip_data where STATEFP ='{sfp}' and COUNTYFP = '{cfp}' ".format(sfp=rec[0], cfp=rec[1]))
for item in data.collect():
print(item)
# do something
return (rec[0], rec[1])
if __name__ == "__main__":
sc = SparkContext(appName="Some app")
print("Starting some app")
SQLContext = SQLContext(sc)
parquetFile = SQLContext.read.parquet("/path/to/data/")
parquetFile.registerTempTable("zip_data")
df = SQLContext.sql("select distinct STATEFP,COUNTYFP from zip_data where STATEFP IN ('12') ")
rslts = df.map(doWork)
for rslt in rslts.collect():
print(rslt)
В этом примере я пытаюсь запросить ту же таблицу, но хотел бы запросить и другие таблицы, зарегистрированные в Spark SQL.
Благодарим вас за ответ, это имеет смысл, и я продолжаю забывать о распределенном аспекте. –