如何通过HTTP或Java API从远程客户端获取HDFS中一个或多个密钥的值?例如,下面的文件有一百万个键和值。我只想知道“手机”和“玩具”钥匙的价值。
我的文件:
book, 5notebook, 5phone, 3toys, 2...
book, 5
notebook, 5
phone, 3
toys, 2
.
ct3nt3jp1#
HDFS是数据块存储,而不是密钥值存储。
如果您需要这样的查询,您可以选择Acumulo、HBase或Have(外加Presto/Trino、Drill、Spark等变体)。
否则,您必须读取整个文件,然后遍历每一行,查找这些值。考虑到HDFS文件可能有几GB大小,并且您不应该为了简单的KV查找而通过HTTP/RPC传输GB的数据,这并不理想。相反,您可以使用MapReduce或Spark将文件读取为2列CSV文件,但同样,这将迭代和解析所有行,而不是可索引的查找表。
或者,使用数据或将数据转储到传统数据库中,您可以查询特定值
1条答案
按热度按时间ct3nt3jp1#
HDFS是数据块存储,而不是密钥值存储。
如果您需要这样的查询,您可以选择Acumulo、HBase或Have(外加Presto/Trino、Drill、Spark等变体)。
否则,您必须读取整个文件,然后遍历每一行,查找这些值。考虑到HDFS文件可能有几GB大小,并且您不应该为了简单的KV查找而通过HTTP/RPC传输GB的数据,这并不理想。相反,您可以使用MapReduce或Spark将文件读取为2列CSV文件,但同样,这将迭代和解析所有行,而不是可索引的查找表。
或者,使用数据或将数据转储到传统数据库中,您可以查询特定值