问题标签 [data-ingestion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
340 浏览

linux - 找不到类 'org.apache.hadoop.hive.druid.DruidStorageHandler'

druid hive handler 的 jar 文件在那里。客户表已经存在于配置单元中,其中包含数据。配置单元库文件夹中的文件名hive-druid-handler-3.1.2.jar

当我尝试在 hive 中为德鲁伊创建表时出现错误

这是SQL。

可能是什么原因 ?

0 投票
2 回答
2563 浏览

shared-memory - 在 Cloud Run 中将共享缓存对象存储在哪里?

我正在使用 Cloud Run 创建数据提取管道。每次通过 Pub Sub 将文件放入 GCS 存储桶时,都会调用我的 Cloud Run api。我需要加载一些元数据,其中包含我正在摄取的数据的文本。此元数据很少更改。我显然不想在每次执行时将它重新加载到内存中。我最好的选择是什么?到目前为止,我能够研究的是:

选项1

如果在每个服务请求上重新创建对象的成本很高,您也可以将对象缓存在内存中。将其从请求逻辑转移到全局范围会带来更好的性能。 https://cloud.google.com/run/docs/tips#run_tips_global_scope-java

在此链接给出的示例中,是否仅在冷启动时调用了一次重计算函数?如果我需要在元数据更新时偶尔重新触发此功能怎么办。我还发现以下信息令人不安,因为它似乎说不能保证其他实例会重用该对象。

在 Cloud Run 中,您不能假设在请求之间保留服务状态。但是,Cloud Run 确实会重用单个容器实例来服务持续的流量,因此您可以在全局范围内声明一个变量,以允许在后续调用中重用其值。无法提前知道任何单个请求是否会从这种重用中受益。

选项 2

使用 Redis 或 Cloud Memory Store 之类的东西,只要有更改,就会由云功能更新。并且所有的云运行 api 实例都从 Redis 中拉取元数据信息。这会比选项 1 性能更低还是更高?这还有其他不利方面吗?

如果还有其他更好的方法可以做到这一点,我会非常感兴趣。

更新 1:我想了更多,因为我的元数据对于每个租户都是不同的,而且我的云运行代码的每次调用都会为一个租户摄取一个文件,加载所有租户是个坏主意每次执行时的元数据,即使它被缓存。不过,我可能会在每个租户的项目中运行单独的云运行。

0 投票
2 回答
454 浏览

performance - 从 S3 到 Snowflake 和性能

我有大量的事件以小型 JSON 文件的形式存储在 S3 中。现在我需要使用 Snowpipes 将这些文件摄取到 Snowflake 中。发送到 Snowflake 的请求数量是否存在性能问题?我应该将这些小文件合并成一个更大的 JSON,然后让 Snowflake 摄取它吗?

我知道 Snowflake 可以自动检测 S3 上的更改并尝试刷新其外部表,但我是否应该让小文件不断触发这个过程?

0 投票
2 回答
111 浏览

postgresql - 具有外键约束的关系数据库如何摄取可能顺序错误的数据?

数据库正在从流中提取数据,满足外键约束所需的所有行可能会延迟或永远不会到达。

这可以通过使用另一个数据存储来完成,一个没有外键约束的数据存储,然后当所有需要的数据都可用时,读入具有 fk 约束的数据库。但是,这增加了复杂性,我想避免它。

我们正在研究一种创建“占位符”行以将外键指向的解决方案。当真实数据进来时,占位符被替换为真实值。同样,这增加了复杂性,但这是迄今为止我们找到的最佳解决方案。

人们通常如何解决这个问题?

编辑:一些可能有助于解释问题的示例数据:

假设我们有这些表:

如果我先下单,没问题!但是,假设我尝试:

INSERT INTO line_item (order_number) values (123)在插入订单 123 之前。这当然会使 fk 约束失败。但这可能是我获取数据的顺序,因为它是从从多个来源收集这些数据的流中读取的。

另外,为了解决@philpxy 的问题,我对此并没有真正找到太多。提到的一件事是延迟约束。这是一种在事务结束时等待执行 fk 约束的机制。但是,我认为在我的情况下不可能这样做,因为这些插入语句将在收到数据时随机运行。

0 投票
0 回答
45 浏览

apache-kafka - 将数百万物联网设备中的数据提取到 kafka 主题的最佳工具/技术

任何人都可以建议将数百万条消息从 IOT 设备(传感器/移动设备等)摄取到我服务器中的 kafka 主题的最佳方法吗?最佳成本、可扩展性和吞吐量。Kafka 集群托管在 AWS 中。

我们尝试了 devices -> ALB -> NiFi -> Kafka , devices -> ALB -> GO Lang -> Kafka

还有其他更好的架构吗?

谢谢 MH

0 投票
0 回答
32 浏览

amazon-kinesis - 适用于 Web 应用程序的 Kinesis 生产者

我在玩 Kinesis 数据流,想知道 Web 应用程序或移动应用程序如何将事件发送到 Kinesis 数据流。一种方法是设置一个基于 java spring 的端点,Web 应用程序或移动应用程序将发布到该端点,并且服务器将使用 KPL 聚合/收集记录。另一种是将事件发布到像 sqs 或数据库这样的中间存储,然后通过 lambda 将它们发送到 kinesis 数据流。但在这两种情况下,我觉得中间步骤减少了数据流的“实时”本质。有人对这种情况有任何想法/经验吗?

0 投票
2 回答
122 浏览

r - 如何将结构松散的文本文件中的表格读入 R 中的数据框中?

查看此 NOAA 网页上的“估计的全球趋势每日值”文件。它是一个.txt包含 50 个标题行(用前导#s 标识)后跟数千行表格数据的文件。下载文件的链接嵌入在下面的代码中。

我怎样才能读取这个文件,以便我最终得到一个具有适当列名和数据的数据框(或小标题)?

我所知道的所有文本到数据的功能都被这些标题行所阻碍。这是我刚刚尝试过的,从这个 SO Q&A中抽离出来。#我的想法是将文件读入行列表,然后从列表中删除以开头的行,然后删除do.call(rbind, ...)其余行。顶部的下载部分工作正常,但是当我运行该函数时,我得到一个空列表。

0 投票
4 回答
162 浏览

apache-spark - 将大型机 IMS 数据摄取到 Hadoop

我正在尝试将 IMS 大型机数据引入 Hadoop。想知道是否有可能通过以下任何 a)Apache Spark 或 MapReduce 作业。b) 任何其他工具/技术。

主要目标是我们希望每天/每周摄取 IMS 大型机数据,这些数据将按计划运行

0 投票
2 回答
315 浏览

google-cloud-platform - 使用 Google Cloud 被动地摄取批处理数据(客户端推送)的好方法是什么?

我正在我的公司实施我的第一个“自动化”数据摄取管道。我们的客户不想让我们在他们的数据库中进行任何调用(甚至创建副本等)。到目前为止,我认为最好的解决方案是端点(让他们将数据推送到存储中),这样我们就可以使用它并继续所有的数据科学过程。我的云提供商是 Google Cloud,我的客户使用 MySQL 服务器。

我一直在网上阅读许多主题,并访问了以下链接:

Google Cloud Data Lifecycle - 对于批处理,它谈到了 Cloud Storage、Cloud Transfer Appliance、Transfer Appliance

签名 URL - 这些 URL 是有时间限制的资源,用于访问(例如,Google Cloud Storage)并将数据写入其中。

我的简单解决方案是用户签名 URL -> 云存储 -> 数据流 -> BigQuery。这是一个好方法吗?

总而言之,我正在寻求有关最佳实践的建议以及让用户在 GCP 中插入数据而不暴露他的数据或我的基础架构的可能方法。

禁忌:

  • 客户端将定期发送数据(每天一次摄取)
  • 数据是半结构化的(我将创建和内部管道进行转换)
  • 预处理后,数据必须发送到 BigQuery
0 投票
1 回答
1779 浏览

snowflake-cloud-data-platform - 使用 Snowpipe - 加载小文件的最佳做法是什么。例如。每天数千个 4K 文件?

问题

  1. 使用 Snowpipe 加载小文件(例如 4K)比 16K、500K 或 1-10Mb(推荐的文件大小)要贵多少。注意:这个问题意味着加载小文件比推荐的 1-10Mb 更昂贵。

  2. 了解最佳实践是加载大小为 1-10Mb 的文件,但我需要近乎实时的交付(几分钟)。我可以连接文件以使它们更大,但不能等待超过 60 秒才能将微批处理发送到 S3 并因此发送到 Snowpipe。我目前每 30 秒写一次我所有的内容,但我每 60 秒看到一次 Snowpipe 报告。这是否意味着将文件写入 S3 的频率超过 60 秒是没有意义的?IE。如果我每 30 秒发送一次文件,它实际上会减少平均延迟,或者是 60 秒的最小雪管周期。

  3. 加载 4K 文件(每天大约 200Mb,每个文件 4K),每 GB 大约需要 20 个积分,这非常昂贵。如果我加载(例如)1-10Mb 范围内的 CSV 文件,使用 Snowpipe 时每 GB 的成本应该是多少?如果我保持在 1-10Mb 范围内,每 GB 的成本会下降吗?

  4. 有没有更快/更便宜的替代方法将数据输入雪花?注意:目前使用 Parquet 格式的 Snowpipe 到 VARIANT,然后使用 STREAMS 和 TASKS 重构数据以进行近乎实时的分析。了解使用 Snowpipe 比使用虚拟仓库更便宜。这是真的?我怀疑真正的答案是“这取决于”。但是“取决于什么”。

  5. 除了我的近实时要求外,我还有许多系统提供批量提要(CSV 格式,大约每 4 小时一次,预计延迟在 30 分钟内处理和呈现以供分析。文件大小在此处有所不同,但大多数为 1Mb到 1Gb 范围。我应该使用相同的 Snowpipe 解决方案,还是我最好从 Airflow 编排工作并在专用虚拟仓库上使用 COPY 命令和 SQL 语句?或者实际上,您会推荐什么替代方案?

  6. 我可以看到 Snowpipe 加载 4K 文件很昂贵,而且可能比更大的文件便宜。如果我加载超过 10Mb 的文件,这些文件会再次变得更加昂贵吗?IE。成本是“钟形曲线”还是趋于平缓。

背景

  1. 我正在使用 Snowpipe 提供近乎实时 (NRT) 的数据加载解决方案。
  2. 我大约每 30 秒从大约 30 个表中将数据从 Kafka 复制到 S3,并且使用 Snowpipe 自动将其加载到 Snowflake。
  3. 数据以 Parqet 格式传递给我,加载到 Variant 中,然后是一个视图以将属性提取到表中,然后再使用 Tasks 和 SQL 进行重组以进行分析。
  4. 在一天之内,我发现加载了 50,000 个文件,文件大小各不相同,但每个文件的平均文件大小为 4K。
  5. 我可以看到每分钟加载大约 30 个文件(即每分钟加载大约 100K)。
  6. 我正在尝试平衡几个非功能性需求。a) 有效使用积分。意识到小文件很昂贵。b)减少延迟(我试图从 Kafka 到仪表板的管道最长大约 2-5 分钟)。c) 简单 - IE。它需要易于理解和维护,因为我希望解决方案能够大规模增长 - IE。从大约 20 张桌子到数百张桌子 - 都需要近乎实时
  7. 我将(在接下来的 3 个月内)每 4 小时进行一次 CSV 批量加载。它们是完全独立的数据源(来自 NRT),并且具有更密集的处理和 ELT。我想知道我是否应该为这些使用 Snowpipe 或 COPY。