处理azure数据湖中的多个读写器

时间:2018-03-05 20:31:22

标签: azure-data-lake data-lake

我是azure数据湖的新手,目前正在使用数据工厂v2将数据从我的交易数据库移动到azure数据湖存储。

考虑一个场景

公司有多个数据源

  • A队负责Source A
  • B队负责Source B
  • C队负责Source C

多个作家

  

每个小组负责将数据移动到数据湖中。

  • A队移动数据
    • /TeamA/entity01.csv
    • /TeamA/entity02.csv
    • ..
  • B队移动数据
    • /TeamB/entity03.csv
    • ..

多个读者

  • Team Analytics可以读取数据并在数据库环境中执行计算
  • Team Power BI可以获取数据对其进行转换并将其复制到单个租户文件夹中
    • Tenant1 / entity01.csv
    • Tenant2 / entity02.csv

问题

  • 读者如何在不与作家冲突的情况下阅读。因此,当读者正在读取数据时,Team X更新数据工厂活动不会写入该文件吗?

我在想什么/我尝试了什么:

我在考虑拥有一个共享的元数据源(可能是所有读者都可以访问的表存储空间)。

"teamA/entity1" : [ 
                   "TeamA/Entity1/01-02-2018/0000/data.csv",
                   "TeamA/Entity1/01-01-2018/0000/data.csv",
                   ]
"teamA/entity2" : [
                   "TeamA/Entity2/01-01-2018/1200/data.csv"
                   "TeamA/Entity2/01-01-2018/0600/data.csv"
                   "TeamA/Entity2/01-01-2018/0000/data.csv"
                 ]
"teamB/entity3" : [
                   "TeamA/Entity3/01-01-2018/0600/data.csv"
                   "TeamA/Entity3/01-01-2018/0000/data.csv"
                 ]
  • 编写者将负责维护一组版本以避免删除/覆盖数据。
  • 读者将负责在此处执行查找,然后阅读数据。

1 个答案:

答案 0 :(得分:0)

Data Lake在写入实际文件之前写入temporary files in the background。这可能会缓解这个问题,但我不确定这是否会100%避免冲突。

如果您愿意在一个工厂中安装管道,您可以使用内置的活动链接来允许数据工厂管理依赖项。

我们通常写入“服务存储”,例如SQL服务器,而不是让powerbi直接访问数据湖商店,这可能有助于分离事物(也有利于DirectQuery等)。 但是我还没有看到数据块支持,我敢打赌它与HDInsight的使用方式类似。

值得注意的是,由于您发现Data Lake Store不是OLTP数据源,这种情况并不是数据存储库的意义所在,此stackoverflow帖子更详细地讨论了这一点:Concurrent read/write to ADLA