Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Apache spark LoadIncrementalHFiles:对HFiles进行分组时发生拆分_Apache Spark_Hbase_Bulk Load - Fatal编程技术网

Apache spark LoadIncrementalHFiles:对HFiles进行分组时发生拆分

Apache spark LoadIncrementalHFiles:对HFiles进行分组时发生拆分,apache-spark,hbase,bulk-load,Apache Spark,Hbase,Bulk Load,我实现了一个Spark(v2.4)应用程序,它处理原始数据并将其存储到容器化Hbase(v2.1)中。 我想将数据批量加载到Hbase中,为此,我使用。我遵循了这一点 我将Hbase区域预拆分为10,并通过散列和对散列值应用模来转换每个键,然后将其作为前缀连接到键。 例如:key=a123,newKey=0_a123(假设:hash(a123)mod 10=0) 当我运行Spark应用程序时,我可以看到已创建了Hfiles,但当我尝试使用LoadIncrementalHFiles加载BulkLo

我实现了一个Spark(v2.4)应用程序,它处理原始数据并将其存储到容器化Hbase(v2.1)中。 我想将数据批量加载到Hbase中,为此,我使用。我遵循了这一点

我将Hbase区域预拆分为10,并通过散列和对散列值应用模来转换每个键,然后将其作为前缀连接到键。 例如:key=a123,newKey=0_a123(假设:hash(a123)mod 10=0)

当我运行Spark应用程序时,我可以看到已创建了Hfiles,但当我尝试使用LoadIncrementalHFiles加载BulkLoad时,出现以下错误:

LoadIncrementalHFiles:分组HFiles时发生拆分,请重试 尝试12次,剩余10个文件进行分组或拆分

我看到了以下我认为与我已经做的相似的事情

  • 为什么LoadIncrementalHFiles失败
  • 在集装箱化环境中执行LoadIncrementalHFiles之前,Hfiles是否也应该在容器上
  • 我是否应该以不同的方式预拆分Hbase区域
  • 有没有计算区域数量的公式
  • 在Hbase日志中,我可以看到以下错误:

    regionserver.SecureBulkLoadManager:未能完成批量加载 java.io.FileNotFoundException:文件。。。不存在


    由于可以对行进行散列以获得更好的分布,因此可能需要使用十六进制区域拆分器实用程序对表进行预拆分。它将根据您拥有的区域服务器数量,自动计算出如何在十六进制空间中很好地分割表。也许这可以帮助您绕过不必要的动态拆分。您可以通过以下命令行使用它:

    hbase org.apache.hadoop.hbase.util.RegionSplitter TableName HexStringSplit -c 10 -f CF
    
    • TableName是您的表名
    • 10是群集中的区域服务器数
    • CF是要创建的柱族的名称

    启动此操作时,该表不应存在。

    问题在于Hfiles的位置

    我阅读了Hbase日志,看到它在查找主机上的Hfiles,抛出了FileNotFoundException


    我将Hfiles目录装载到Hbase容器中,问题就解决了。

    有人能帮忙吗?首先感谢您的帮助。我按照你的建议做了预拆分,但我一直都会遇到同样的错误,你还有其他想法吗?我忘了提到我运行容器化Hbase实例(将更新问题中的此信息)。不确定容器是否在这里起作用。也许您不应该使用LoadIncrementalHfiles,而应该尝试更严格的方法,将数据从Spark上传到HBase,例如通过SHC连接器。有很多关于如何使用它的文档,而且非常健壮。我发布了我的问题的解决方案。谢谢你的帮助!