Чтение текстового файла с использованием Spark и вставка значения в spark sql - PullRequest
0 голосов
/ 04 мая 2020
from pyspark import SparkContext
from pyspark import SparkConf

lines = sc.textFile("s3://test_bucket/txt/testing_consol.txt")

llist = lines.collect()

for lines in llist:
        final_query = spark.sql("""{0}
        """.format(lines))

Это то, что внутри txt файла:

select * from test_table 
where id=1

У меня появляется сообщение об ошибке:

"\ nmismatched input 'where' Ожидает {' (',' SELECT ',' FROM ',' ADD ',' DES C ',' WITH ',' VALUES ',' CREATE ',' TABLE ',' INSERT ',' DELETE ',' DESCRIBE ', «EXPLAIN», «SHOW», «USE», «DROP», «ALTER», «MAP», «SET», «RESET», «START», «COMMIT», «ROLLBACK», «REDUCE», «REFRE» SH ',' CLEAR ',' CACHE ',' UNCACHE ',' DFS ',' TRUNCATE ',' ANALYZE ',' LIST ',' REVOKE ',' GRANT ',' LOCK ',' UNLOCK ',' MSCK ',' EXPORT ',' IMPORT ',' LOAD '} (строка 1, позиция 0) \ n \ n == SQL == \ nwhere id = 1 \ n ^^^ \ n "

Искра sql работает, если я изменяю содержимое txt-файла в одну строку:

select * from test_table where id=1

Кажется, что искра sql может распознать только первую строку, а не последующая строка.

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

Если вы просто объедините строки запроса, он должен работать:

llist = ' '.join(lines.collect())
final_query = spark.sql(llist)
0 голосов
/ 04 мая 2020

Просто чтобы прочитать запрос, создание rdd не является опцией. Вы должны передать текстовый файл, содержащий запрос, в драйвер драйвера с помощью параметра --files, затем прочитать файл с помощью команды python open и передать свой запрос в Spark sql.

Для чтения небольших файлов просто для передачи запроса не рекомендуется использовать искру.

...