从twitterjson文件中提取列名

fquxozlt  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(308)

我正在尝试使用hadoop分析twitter数据。我已经根据之前的tweet创建了一个hive表。现在我再次下载了twitter数据,问题是在tweet中出现了以前tweet数据中没有的新列。我的问题是,有没有办法找到tweet的最大列数,以便为它创建一个配置单元表。无奈至今好心帮忙谢谢

vohkndzv

vohkndzv1#

我不知道要得到tweet包含的所有专栏
我认为您应该使用像avro这样在内部存储元数据的存储格式,并相应地更新模式,这样您就可以支持动态模式

jaxagkaj

jaxagkaj2#

如果您有json格式的tweet,那么使用下面的查询在hive中生成表

CREATE EXTERNAL TABLE tweets (
   id BIGINT,
   created_at STRING,
   source STRING,
   favorited BOOLEAN,
   retweet_count INT,
   retweeted_status STRUCT<
      text:STRING,
      user:STRUCT<screen_name:STRING,name:STRING>>,
   entities STRUCT<
      urls:ARRAY<STRUCT<expanded_url:STRING>>,
      user_mentions:ARRAY<STRUCT<screen_name:STRING,name:STRING>>,
      hashtags:ARRAY<STRUCT<text:STRING>>>,
   text STRING,
   user STRUCT<
      screen_name:STRING,
      name:STRING,
      friends_count:INT,
      followers_count:INT,
      statuses_count:INT,
      verified:BOOLEAN,
      utc_offset:INT,
      time_zone:STRING>,
   in_reply_to_screen_name STRING
) 
ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
LOCATION '/user/hive/warehouse/tweets';

下载jar表单http://files.cloudera.com/samples/hive-serdes-1.0-snapshot.jar 并添加

ADD JAR /home/kishore/hive-0.9.0/lib/hive-serdes-1.0-SNAPSHOT.jar;

相关问题