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 ', где' ожидающий {'(', 'SELECT', 'FROM', 'ADD', 'DESC', 'WITH', 'VALUES', 'CREATE', 'TABLE', 'INSERT', ' УДАЛИТЬ, «ОПИСАТЬ», «ОБЪЯСНИТЬ», «ПОКАЗАТЬ», «ИСПОЛЬЗОВАТЬ», «УМЕНЬШИТЬ», «ИЗМЕНИТЬ», «КАРТА», «УСТАНОВИТЬ», «СБРОС», «СТАРТ», «КОММИТ», «РОЛБАК» , 'REDUCE', 'REFRESH', '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 работает, если я изменяю содержимое текстового файла в одну строку:

select * from test_table where id=1

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

-1
Ray 4 Май 2020 в 13:44

2 ответа

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

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

0
Shubham Jain 4 Май 2020 в 11:12

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

llist = ' '.join(lines.collect())
final_query = sparkSession.sql(llist)
0
ggagliano 4 Май 2020 в 12:51