Добавление нового столбца в Hive с использованием DataFrame - PullRequest
0 голосов
/ 26 марта 2020

У меня есть одна временная таблица (ежедневное усечение и загрузка), в которой я загружаю данные из одного CSV-файла с помощью оператора load таблицы, сохраняя данные в виде текстового файла в таблице. Теперь в этой таблице мне нужно создать один столбец, который может записать текущую дату. Для этого я создаю один Df из этой таблицы и использую метод withcolumn, добавляя новый столбец и снова сохраняю этот df в той же таблице, используя режим («перезаписать»). Но когда я проверяю данные в своей таблице не могу получить никаких данных. Кто-нибудь может подсказать, как мне это реализовать. Я попробовал приведенный ниже код.

    CREATE TABLE test (id String, Name STRING,college STRING) ROW FORMAT DELIMITED   FIELDS TERMINATED BY ',' STORED AS TEXTFile;
    load Data inpath 'path' into table dbname.test ;
    val s1=spark.sql("select * from dbname.test")
    val s2=s1.withColumn("Admission_date", date_add(current_date(),0));
    s2.write.mode("overwrite").saveAsTable("dbname.test")

1 Ответ

0 голосов
/ 26 марта 2020

Проблема в том, что вы reading and overwriting в той же таблице.

  • Но в искре нам нужно сделать некоторые обходные пути.

Steps:

//1.read hive table
val s1=spark.sql("select * from dbname.test")
val s2=s1.withColumn("Admission_date", date_add(current_date(),0));

//2.write into temporary table tmp
s2.write.mode("overwrite").saveAsTable("dbname.tmp")

//3.read from temporary table and overwrite final table
val s3=spark.sql("select * from dbname.tmp")
s2.write.mode("overwrite").saveAsTable("dbname.test")

//4.drop the temporary table
spark.sql("drop table dbname.tmp")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...