java - Hadoop:查询/读取 Avro 文件

标签 java hadoop hdfs avro apache-nifi

我正在存储从复杂的 JSON 对象导入到 Avro 格式的数据。

JSON 对象由具有嵌套对象和对象数组的对象表示。 Avro 架构如下所示:

{
    "type" : "record",
    "name" : "userInfo",
    "namespace" : "my.example",
    "fields" : [{"name" : "username", 
                 "type" : "string", 
                 "default" : "NONE"},

                {"name" : "age", 
                 "type" : "int",
                 "default" : -1},

                 {"name" : "phone", 
                  "type" : "string", 
                  "default" : "NONE"},

                 {"name" : "housenum", 
                  "type" : "string", 
                  "default" : "NONE"},

                  {"name" : "address", 
                   "type" : {
                         "type" : "record",
                         "name" : "mailing_address",
                         "fields" : [
                            {"name" : "street", 
                             "type" : "string", 
                             "default" : "NONE"},

                            {"name" : "city", 
                             "type" : "string", 
                             "default" : "NONE"},

                            {"name" : "state_prov", 
                             "type" : "string", 
                             "default" : "NONE"},

                            {"name" : "country", 
                             "type" : "string", 
                             "default" : "NONE"},

                            {"name" : "zip", 
                             "type" : "string", 
                             "default" : "NONE"}
                          ]},
                          "default" : {}
                }
    ]
} 

我使用 NiFi 将 JSON 转换为 Avro 并将序列化文件存储在 Hadoop 中(目前我只使用纯 Hadoop): enter image description here

我的问题:

出于测试目的,我想查询存储 HDFS(Avro 格式)的数据。

所以在这一点上我有点困惑,因为很多工具和技术都围绕着 Hadoop.. 我怎样才能以正确的方式做到这一点?什么工具和工作流程?

最佳答案

您应该能够在写入 Avro 数据的 HDFS 位置之上创建一个外部 Hive 表。

这篇文章有例子:

https://community.hortonworks.com/questions/22135/is-there-a-way-to-create-hive-table-based-on-avro.html

https://cwiki.apache.org/confluence/display/Hive/AvroSerDe

关于java - Hadoop:查询/读取 Avro 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43964022/

相关文章:

java - Java 中的影子变量是什么?

java - Activity 和布局之间的联系?如何更改布局?如何启动和销毁一个 Activity ?

java - append 到 HDFS 中的现有文件时出现异常

hadoop - 如何在 Hive 中加载分布式数据?

Hadoop 守护进程不停止

java - 如何从线性布局中动态创建的 EditText 和 TextView 获取数据?

Hadoop on Docker Swarm 访问数据节点的问题

hadoop - 如何显示包含特殊字符串的 HDFS 文件中的特定行

hadoop - Hive:处理存储在 HDFS 中的数据中的负数

java - 仅适用于 Android 上的 RSA 加密中的 IllegalBlockSizeException