Добавление новой строки в пустой фрейм данных, расположенный в озере данных - PullRequest
0 голосов
/ 04 ноября 2019

Я создал пустую таблицу данных для местоположения в Delta, используя следующий код:

deltaResultPath = "/ml/streaming-analysis/delta/Result"

# Create Delta Lake table
sqlq = "CREATE TABLE stockDailyPrices_delta USING DELTA LOCATION '" + deltaResultPath + "'"
spark.sql(sqlq)

Я новичок в spark и не полностью понимаю код sparkSQL. Что я хочу сделать, это вместо того, чтобы вставлять значения из другого фрейма данных, я хотел бы добавить значения, сгенерированные в скрипте Python. Что-то вроде изменения кода с:

insert_sql = "insert into stockDailyPrices_delta select f.* from stockDailyPrices f where f.price_date >= '"  + price_date_min.strftime('%Y-%m-%d') + "' and f.price_date <= '" + price_date_max.strftime('%Y-%m-%d') + "'"
spark.sql(insert_sql)

на

Time = 10
cpu_temp = 3
dsp_temp = 5
insert_sql = "insert into df (Time, cpu_temp, dsp_temp) values (%s, %s, %s)"
spark.sql(insert_sql)

Однако я вижу следующее сообщение об ошибке:

org.apache.spark.sql.catalyst.parser.ParseException: 

ParseException: "\nmismatched input 'Time' expecting {'(', 'SELECT', 'FROM', 'DESC', 'VALUES', 'TABLE', 'INSERT', 'DESCRIBE', 'MAP', 'MERGE', 'UPDATE', 'REDUCE'}(line 1, pos 16)\n\n== SQL ==\ninsert into df (Time, cpu_temp, dsp_temp) values (%s, %s, %s)\n----------------^^^\n"

Как я могу исправить этот код?

1 Ответ

0 голосов
/ 05 ноября 2019

Я мог бы заставить это работать с чем-то вроде этого

spark.sql("insert into Result_delta select {} as Time, {} as cpu_temp, {} as dsp_temp".format(Time, cpu_temp, dsp_temp))
...