【问题标题】:Is there any way to create index in Pig Script?有什么方法可以在 Pig Script 中创建索引?
【发布时间】:2015-02-18 17:37:18
【问题描述】:

我有一个没有 ID 号(索引)的数据文件。可以使用 UDF 或 pig 中的任何内置函数创建每个条目的索引吗?例如:

data = load 'myfile.txt' using PigStorge(',') AS ( speed:float, location:charrarray);
A = foreach data generate index as (Id:int), speed, location;

我在将数据从 pig 加载到 Hbase 时遇到问题,因为 hbase 将速度读取为行键值,并且我的文件中有许多重复数据(速度)。我想将索引设置为行键值并存储在 Hbase 表中。您对此有什么建议吗?谢谢你。

【问题讨论】:

    标签: hadoop indexing hbase apache-pig


    【解决方案1】:

    从根本上说,在分布式计算中添加像 ID 这样不断增加的计数确实很难。问题是每个拆分都需要知道它之前有多少个数字才能继续计数。所以,我不建议采用这种方法。

    您可以编写一个生成 Java UUID 的 UDF,也可以使用 RANDOM 来生成一个随机数。例如:

    data = load 'myfile.txt' using PigStorge(',') AS ( speed:float, location:charrarray);
    A = foreach data generate RANDOM() as id, speed, location;
    

    一些不请自来的建议:您需要考虑一下为什么要使用 HBase。使用键值存储的全部意义在于您可以通过键查找内容。如果你只是用任意 ID 将它插入 HBase,你将如何查找它?如果您只是计划进行全表扫描,您可能应该只使用 HDFS。

    您会针对您的数据提出哪些类型的问题?如果您是按位置进行的,则可以将您的位置作为键的一部分并将事件放在行中。

    【讨论】:

    • 我向您保证,您只是使用错误或不了解数据模型的工作原理。它既不是垃圾也不是不完整的。您应该阅读有关它的更多信息以了解它可以为您做什么,但您需要做什么才能使其正常工作。例如,2010 年,Facebook 每月使用 HBase 存储 1350 亿条消息。我确信它可以处理您的传感器数据。 highscalability.com/blog/2010/11/16/…
    【解决方案2】:

    Pig 0.14 版本支持内置函数UniqueID。它将以“taskindex-sequence”的形式为每条记录返回唯一的id字符串。

    A = foreach data generate UniqueID() as id, speed, location;
    

    http://pig.apache.org/docs/r0.14.0/func.html#uniqueid

    【讨论】:

    • 我不知道这是一回事。感谢您的更新!
    【解决方案3】:

    这可以通过使用以下 python UDF 解决:

    import random 
    from datetime import datetime as dt
    
    def currTime():
        x =dt.now()
        return x.microsecond+  int(random.random()*100)+x.second*1000000 
    

    在每个步骤中,它都会生成唯一编号,我将此编号用作索引。仍然有可能在不同的条目中具有相同的索引,但是它太小了,可能小于(0.01%),并且取决于计算机对每个单元步骤的处理时间。

    【讨论】:

    • 你绝对会用这个得到重复的ID。 x.microsecond 有 1000 个值,x.second 有 60 个值,int(random.random()*100) 有 100 个值 = 6m 组合。根据生日问题,在仅 7434 个 ID 生成之后,您将有 99% 的机会重复 ID。
    猜你喜欢
    • 2011-09-06
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    相关资源
    最近更新 更多