regex - Hive with Regex SerDe 拆分行,每个单词成为一列

标签 regex hadoop hive

我正在尝试使用正则表达式 SerDe 从文本文件创建配置单元表。我开始很容易,只想将文本文档中的每个单词解析成一行。每行有一列,就是单词。

我使用的正则表达式是 ([a-zA-z]+)

这是我向 hive 发出的创建表命令的后半部分,

行格式 SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex"= "([a-zA-Z]+)", "output.format.string"= "%1$s") 存储为文本文件;

目前该表几乎全部为NULL。

任何帮助都会很棒,谢谢!

最佳答案

反序列化输入时,RegExSerDe 期望输入行与提供的正则表达式完全匹配。 如果不匹配,则该行中的所有列都将为 NULL。

要从输入中拆分所有单词,您需要采用不同的方法,首先将输入按原样加载到表中。 然后对输入进行空格拆分并将其分解,以便获得单个单词。您可能想要进行一些额外的匹配和过滤以删除不需要的标点符号。

CREATE TABLE input (text STRING);
LOAD DATA LOCAL INPATH 'input.txt' INTO TABLE input;
SELECT word FROM input LATERAL VIEW explode(split(text, ' ')) words AS word;

关于regex - Hive with Regex SerDe 拆分行,每个单词成为一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10308162/

相关文章:

python - (.*js$) 和 .*(js)$ 有什么区别

C# 正则表达式删除与号

java - MapReduce Hadoop作业总体进展

hadoop - 我们是否必须为 HDFS 文件系统格式化 datanode 还是只需要格式化 namenode

ruby - 这个反引号 ruby 代码是什么意思?

php - 查找所有 PHP 短标签

sorting - Hadoop 对值进行二次排序。对松散的值(value)观进行分类

sql - hive 中的分组/窗口化

json - 执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。 com/mongodb/util/JSON

hadoop - 如何在我当前的体系结构中使用Parquet?