Я новичок в PySpark. Поэтому этот вопрос может показаться довольно элементарным для других.
Я пытаюсь экспортировать фрейм данных, созданный с помощью createOrReplaceTempView()
, в Hive. Шаги следующие:
sqlcntx = SQLContext(sc)
df = sqlcntx.read.format("jdbc").options(url="sqlserver://.....details of MS Sql server",dbtable = "table_name").load()
df_cv_temp = df.createOrReplaceTempView("df")
Когда я использую df_cv_temp.show(5)
, выдает ошибку следующим образом
NoneType Object has no attribute 'show'
Интересно, когда я пытаюсь увидеть df.show(5)
, я получаю правильный вывод.
Естественно, когда я вижу вышеупомянутую ошибку, я не могу продолжить.
Теперь у меня два вопроса.
- Как исправить вышеуказанную проблему?
- Если учесть 1-й вопрос, каков наилучший способ экспорта
df_cv_temp
в таблицы HIVE?
P.S. Я использую PySaprk 2.0
Обновление: включение ответа Джима
Опубликовать ответ, полученный от Джима, я обновил код. Пожалуйста, смотрите ниже пересмотренный код.
from pyspark.sql import HiveContext,SQLContext
sql_cntx = SQLContext(sc)
df = sqlcntx.read.format("jdbc").options(url="sqlserver://.....details of MS Sql server",dbtable = "table_name").load()
df_curr_volt.createOrReplaceTempView("df_cv_temp")
df_cv_filt = sql_cntx.sql("select * from df_cv_temp where DeviceTimeStamp between date_add(current_date(),-1) and current_date()") # Retrieving just a day's record
hc = HiveContext(sc)
Теперь проблема начинается. Пожалуйста, обратитесь к моему вопросу 2.
df_cv_tbl = hc.sql("create table if not exits df_cv_raw as select * from df_cv_filt")
df_cv_tbl.write.format("orc").saveAsTable("df_cv_raw")
Приведенные выше две строки вызывают ошибку, как показано ниже.
pyspark.sql.utils.AnalysisException: u'Table or view not found: df_cv_filt; line 1 pos 14'
Так каков правильный подход к этому?