Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays HBase阵列和配置单元_Arrays_Hadoop_Hive - Fatal编程技术网

Arrays HBase阵列和配置单元

Arrays HBase阵列和配置单元,arrays,hadoop,hive,Arrays,Hadoop,Hive,我正在尝试使用Hadoop的ArrayWritable类将数组写入HBase。我正在将列表序列化为ArrayWritable,然后使用WritableUtils.toByteArray获取字节。阅读时,我从ArrayWritable重建列表。已在下面添加此操作的代码。我能够正确地将列表读/写到HBase数据库中 然而,当我们试图在写入的数据之上创建一个外部表时,我们无法看到预期格式的存储数组。字符串列表显示为不带任何分隔符的串联字符串,当然不是数组或字符串 问题:我们需要HBase阵列以可行的格

我正在尝试使用Hadoop的ArrayWritable类将数组写入HBase。我正在将列表序列化为ArrayWritable,然后使用WritableUtils.toByteArray获取字节。阅读时,我从ArrayWritable重建列表。已在下面添加此操作的代码。我能够正确地将列表读/写到HBase数据库中

然而,当我们试图在写入的数据之上创建一个外部表时,我们无法看到预期格式的存储数组。字符串列表显示为不带任何分隔符的串联字符串,当然不是数组或字符串

问题:我们需要HBase阵列以可行的格式在Hive中可见,我们可以使用。我们还将导出这些数据以便查询到Redshift,因此需要一些可行的方法。如何修改我的读/写方法,使其既适用于Java应用程序,又适用于Hive/Redshift

用于序列化和反序列化的方法:

public static ArrayWritable getWritableFromArray(List<String> stringList) {
    Writable[] writables = new Writable[stringList.size()];

    for (int i = 0; i < writables.length; i++) {
        writables[i] = new Text(stringList.get(i));
    }

    return new ArrayWritable(Text.class, writables);
}

public static List<String> getListFromWritable(ArrayWritable arrayWritable) {
    Writable[] writables = arrayWritable.get();
    List<String> list = new ArrayList<>(writables.length);
    for (Writable writable : writables) {
        list.add(((Text) writable).toString());
    }
    return list;
}
将此数据导出为红移时,城市显示为串联,如下所示:

indoreraipur
chandigarhindore

我怎样才能解决这个问题?试图将列表直接写入HBase是个坏主意吗?我是否应该尝试手动序列化和反序列化它,并将其作为字符串而不是数组类型写入?

看看这个。谢谢,但这并不能真正解决我的问题;它主要解释了如何在HBase中存储阵列,这与上面的代码基本相同。
select * from testdata;
OK
23821975838576221       ["\u0000\u0000\u0000\u0001\u0006raipur\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"]
808554262192775221      ["\u0000\u0000\u0000","\u0006indore\u0006raipur\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"]
2361689275801875221     ["\u0000\u0000\u0000","\u0006indore\u0006raipur\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"]
4897772799782875221     ["\u0000\u0000\u0000","\nchandigarh\u0006indore\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"]
indoreraipur
chandigarhindore