jjzjj

数仓开发之DIM层

目录一:DIM层设计要点 二:DIM层大概实操流程   2.1读取数据  2.2过滤数据  2.3写出数据 三:配置表3.1配置表设计 四:实操流程4.1 接收Kafka数据,过滤空值数据4.2 动态拆分维度表功能4.3  把流中的数据保存到对应的维度表五:具体代码实现 5.1 接收Kafka数据,过滤空值数据5.2 根据MySQL的配置表,动态进行分流5.3 保存维度到HBase(Phoenix)一:DIM层设计要点(1)DIM层的设计依据是维度建模理论,该层存储维度模型的维度表。(2)DIM层的数据存储在 HBase 表中。DIM 层表是用于维度关联的,要通过主键去获取相关维度信息,这种场

为HBASE表创建拆分的策略。

CananyonesuggestmestrategieswhilesplittingHBASEtable.Ihavedatarangestartsfrom[a-z].我将其分为{“e”,“j”,“o”,“u”}。这将是有效的方式。看答案您的数据如何拆分?当您拆分桌子时,您需要避免热点。例如,可以防止盐。如果您的行均匀分布,则分裂很好。但是,如果您不控制数据,则最好将盐涂在行键上。我会给你一个例子HBase文档如果您有这样的行:foo001foo002foo003foo004然后,您的所有行都将进行相同的拆分,这将导致热点。如果您在行开头添加一个随机字符串,例如“E”,“J”,“O”或“U”,那

java - 解决 Java 中的传递依赖冲突

我正在尝试构建一个Dropwizard(Jersey)与HBase通信的REST端点。尽管这是我仅有的两个顶级依赖项,但这两个依赖项都加载了许多相互冲突的传递依赖项。此类冲突的一个简单示例是Google的Guava:HBase客户端指定版本11Dropwizard指定18Dropwizard不适用于版本11,HBase不适用于版本18。我已经检查了Maven阴影插件文档,但它似乎不允许您重新定位在依赖jar中找到的类。所以我不知道如何解决这个问题,除非将这两个组件分离到单独的JVM中。 最佳答案 这是一个肮脏的解决方案。但是你可以…

java - 如何在 OpenTSDB(时间序列数据库)中插入数据

我是OpenTSDB的新手。我以某种方式设法安装和配置了OpenTSDB,但我不知道如何从客户端将数据放入OpenTSDB。你们谁能帮帮我吗? 最佳答案 你读过gettingstartedguide吗?您有多种选择。一旦启动,并通过./tsdbmkmetricmymetric.data_1mymetric.data_2创建指标,您可以批量导入以形式编写的文件metric_name时间戳值标签,例如mymetric.data_1129564363648a=foo然后你可以./tsdb导入文件另一种方法是以与上述相同的形式向服务器“te

java - 作者为什么提出HBase Tall-Thin schema over Short-Wide 里面描述的?

我正在阅读有关Tall-Thin与Short-WideHBase模式设计的文章,作者提出了以下我不理解的推理:It'sbesttoconsidertheTall-Thindesignasweknowitwillhelpinfasterdataretrievalbyenablingustoreadthesinglecolumnfamilyforuserblogentriesatonceinsteadoftraversingthroughmanyrows.Also,sinceHBasesplitstakeplaceonrows,datarelatedtoaspecificusercanbe

java - 从 hbase 行中检索时间戳

使用HbaseAPI(获取/放置)或HBQLAPI,是否可以检索特定列的时间戳? 最佳答案 假设您的客户端已配置并且您有一个表格设置。执行get返回ResultGetget=newGet(Bytes.toBytes("row_key"));Resultresult_foo=table.get(get);结果由KeyValue支持.KeyValues包含时间戳。您可以使用list()获取键值列表或使用raw()获取数组。KeyValue有一个获取时间戳的方法。result_foo.raw()[0].getTimestamp()

java - 如何从Hbase读取数据?

您好,我习惯使用SQL,但我需要从HBase表中读取数据。在这方面的任何帮助都会很棒。一本书或者只是一些示例代码可以从表中读取。有人说用扫描仪就可以了,但我不知道怎么用。 最佳答案 来自thewebsite://Sometimes,youwon'tknowtherowyou'relookingfor.Inthiscase,you//useaScanner.Thiswillgiveyoucursor-likeinterfacetothecontents//ofthetable.TosetupaScanner,dolikeyoudida

java - 如何在hbase中将列添加到列族

我是hbase的新手。你能告诉我如何将列添加到列族吗?我有这样的数据:{name:abcaddres:xyz}我和列族人有表测试。如何将姓名和地址作为列添加到此人。请在hbase命令行和java中告诉我。 最佳答案 HBase外壳:来自Hbaseshellwiki:http://hbase.apache.org/book.html#shell在指定的表/行/列和可选的时间戳坐标处放置一个单元格“值”。要将单元格值放入表“t1”中的“c1”列下标有时间“ts1”的“r1”行,请执行以下操作:hbase>put't1','r1','c1

java - java中的双序列化和长序列化

我可以在HBase中将数字存储为Long和Double。它们在Java中都占用8个字节。使用Double的优点是它可以提供更广泛的整数存储范围。但是,我认为Long的范围也足够我使用了。有没有人知道LongvsDobule的序列化和反序列化性能?我对它们之间的比较很感兴趣。谢谢。 最佳答案 如果要存储整数,请使用Long。您关于“使用Double的优势在于它提供更广泛的整数存储范围”的说法是不正确的。两者都是64位长,但是double必须使用一些位来表示指数,留下更少的位来表示幅度。您可以在double中存储更大的数字,但会失去精度

java - 如何从spark中的hbase表中获取所有数据

我在hbase中有一个名为UserAction的大表,它具有三个列族(歌曲、专辑、歌手)。我需要从“歌曲”列族中获取所有数据作为JavaRDD对象。我尝试了这段代码,但效率不高。有更好的解决方案吗?staticSparkConfsparkConf=newSparkConf().setAppName("test").setMaster("local[4]");staticJavaSparkContextjsc=newJavaSparkContext(sparkConf);staticvoidgetRatings(){Configurationconf=HBaseConfiguration