【发布时间】:2017-08-09 17:00:19
【问题描述】:
我将一个充满 twitter 信息(json 格式)的 dynamodb 加载到 hive 中。 json 文件的格式如下所示:
{"id":{"s":"894643473017561088"},"sentiment":{"s":"neutral"},"subjectivity":{"s":"0.0"},"username":{"s":"Jessi"},"geo":{"s":"None"},"location":{"s":"Valley of the sun☀️"},"polarity":{"s":"0.0"},"tweet":{"s":"b\"RT @bannerite: Donald Trump's lies have consequences. We're seeing them now | Charlotte Observer #DemForce""},"created_at":{"s":"Mon Aug 07 19:36:40 +0000 2017"},"screen_name":{"s":"JessiAtkins06"},"followers_count":{"s":"19"}}
我像这样创建了配置单元表:
create external table table1 (
> id struct<s:string>,
> sentiment struct<s:string>,
> subjectivity struct<s:string>,
> username struct<s:string>,
> geo struct<s:string>,
> location struct<s:string>,
> polarity struct<s:string>,
> tweet struct<s:string>,
> created_at struct<s:string>,
> screen_name struct<s:string>,
> followers_count struct<s:string>)
> ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
> STORED AS TEXTFILE;
然后使用通常的“load data inpath...”公式从 json 文件中加载数据。
我需要从“tweet”字段中提取主题标签,但是当我尝试使用正则表达式搜索主题标签时,出现错误:
hive> select regexp_extract(lower(tweet), '/\B#\w*[a-zA-Z]+\w*/',0) as patterns
> from table1
> limit 10;
FAILED: NullPointerException null
我想知道这是否是因为字段的结构格式。我本可以将发电机文件导出为 csv,但推文中有很多逗号。无论 int 字段设置为 0、1 还是 2,都会发生同样的错误。
我正在尝试确定该字段中的哪个值为 null,但我真的不确定 - 我在一个由字符串类型字段组成的表上尝试了一个类似的命令并且它有效。我看过“什么是 NullPointerException,我该如何解决?”线程但仍然不知道;任何帮助将不胜感激。
【问题讨论】:
-
你能发布导致 NullPointerException 的堆栈跟踪吗?它通常在一个单独的 hivelogs 文件夹中
-
我不确定这是否是堆栈跟踪,但我已将 hive.log 上传到 vaughn-s.net/hadoop/hive.log
-
我在该日志中的任何地方都没有看到 NullPointerException...
-
不幸的是,我不确定在哪里可以找到堆栈跟踪,尤其是在 amazon emr 上。我希望我能提供更多帮助。
标签: json regex hive amazon-dynamodb