gitweixin
  • 首页
  • 小程序代码
    • 资讯读书
    • 工具类
    • O2O
    • 地图定位
    • 社交
    • 行业软件
    • 电商类
    • 互联网类
    • 企业类
    • UI控件
  • 大数据开发
    • Hadoop
    • Spark
    • Hbase
    • Elasticsearch
    • Kafka
    • Flink
    • 数据仓库
    • 数据挖掘
    • flume
    • Kafka
    • Hive
    • shardingsphere
    • solr
  • 开发博客
    • Android
    • php
    • python
    • 运维
    • 技术架构
    • 数据库
  • 程序员网赚
  • bug清单
  • 量化投资
  • 在线查询工具
    • 去行号
    • 在线时间戳转换工具
    • 免费图片批量修改尺寸在线工具
    • SVG转JPG在线工具

分类归档大数据开发

精品微信小程序开发门户,代码全部亲测可用

  • 首页   /  
  • 分类归档: "大数据开发"
  • ( 页面20 )
doris 4月 18,2023

doris上面的集群如何读取CDH6.3.2上面hive存储数据

使用Doris的HDFS插件特性,实现将CDH上Hive的离线计算数据同步到Doris的数仓中,具体步骤如下:

  • 安装Doris HDFS插件

在Doris的所有节点上安装HDFS插件,步骤如下:

$ cd doris-<version>/bin
$ ./hadoop_deploy_tool.sh -s /opt/cloudera/parcels/CDH

其中,<version>是Doris的版本号,/opt/cloudera/parcels/CDH是您CDH集群安装的路径,如果与该路径不同,则需要修改为您的路径。

  • 配置HDFS插件参数

打开Doris的配置文件doris_fe.conf,设置以下参数:

# hdfs config
hdfs_read_strategy = "distributed"
hdfs_cluster.default_fs = "hdfs://<NameNode-IP>:8020"
hdfs_cluster.list = "default"
hdfs_cluster.default_root_path = "/user/hive/warehouse"

其中,<NameNode-IP>是您CDH集群上的NameNode节点IP,后面的路径/user/hive/warehouse是Hive离线计算的数据存储路径,该路径中应包含您需要同步的所有数据。

  • 创建Doris的表并导入数据
LOAD LABEL my_label
(
    [column_name data_type [(length)] [column_attribute], ...]
)
FROM "hdfs://<NameNode-IP>:8020/user/hive/warehouse/<database_name>.db/<table_name>" 
WITH    (
        seperator='\u0001', 
        row_delimiter='\n', 
        null_string='NULL', 
        cols_charset='UTF8'
        );

根据您的业务需求,在Doris中创建相应的表,然后使用Doris的LOAD语句将数据从Hive中导入到Doris的表中,示例语句:

其中,<NameNode-IP>是您CDH集群上的NameNode节点IP,<database_name>是Hive数据库名称,<table_name>是您需要同步的数据表名称。

最后,执行上述LOAD语句即可实现将CDH上Hive的离线计算数据同步到Doris的数仓中,供运营分析和数据科学家们使用。

作者 east
bug清单, 大数据开发 4月 17,2023

CDH一个节点故障影响namenode启动

CDH某个节点磁盘故障,导致上面的角色都有问题。启动namenode时失败,日志报下面错误:

Error: recoverUnfinalizedSegments failed for required journal (JournalAndStream(mgr=QJM to [10.0.20.102:8485, 10.0.20.103:8485, 10.0.20.104:8485], stream=null))
java.io.IOException: Timed out waiting 120000ms for a quorum of nodes to respond.
at org.apache.hadoop.hdfs.qjournal.client.AsyncLoggerSet.waitForWriteQuorum(AsyncLoggerSet.java:137)
at org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager.createNewUniqueEpoch(QuorumJournalManager.java:197)
at org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager.recoverUnfinalizedSegments(QuorumJournalManager.java:436)
at org.apache.hadoop.hdfs.server.namenode.JournalSet6.apply(JournalSet.java:616) at org.apache.hadoop.hdfs.server.namenode.JournalSet.mapJournalsAndReportErrors(JournalSet.java:385) at org.apache.hadoop.hdfs.server.namenode.JournalSet.recoverUnfinalizedSegments(JournalSet.java:613) at org.apache.hadoop.hdfs.server.namenode.FSEditLog.recoverUnclosedStreams(FSEditLog.java:1603) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startActiveServices(FSNamesystem.java:1210) at org.apache.hadoop.hdfs.server.namenode.NameNode6.apply(JournalSet.java:616)atorg.apache.hadoop.hdfs.server.namenode.JournalSet.mapJournalsAndReportErrors(JournalSet.java:385)atorg.apache.hadoop.hdfs.server.namenode.JournalSet.recoverUnfinalizedSegments(JournalSet.java:613)atorg.apache.hadoop.hdfs.server.namenode.FSEditLog.recoverUnclosedStreams(FSEditLog.java:1603)atorg.apache.hadoop.hdfs.server.namenode.FSNamesystem.startActiveServices(FSNamesystem.java:1210)atorg.apache.hadoop.hdfs.server.namenode.NameNodeNameNodeHAContext.startActiveServices(NameNode.java:1898)
at org.apache.hadoop.hdfs.server.namenode.ha.ActiveState.enterState(ActiveState.java:61)
at org.apache.hadoop.hdfs.server.namenode.ha.HAState.setStateInternal(HAState.java:64)
at org.apache.hadoop.hdfs.server.namenode.ha.StandbyState.setState(StandbyState.java:49)
at org.apache.hadoop.hdfs.server.namenode.NameNode.transitionToActive(NameNode.java:1756)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.transitionToActive(NameNodeRpcServer.java:1700)
at org.apache.hadoop.ha.protocolPB.HAServiceProtocolServerSideTranslatorPB.transitionToActive(HAServiceProtocolServerSideTranslatorPB.java:107)
at org.apache.hadoop.ha.proto.HAServiceProtocolProtosHAServiceProtocolServiceHAServiceProtocolService2.callBlockingMethod(HAServiceProtocolProtos.java:4460)
at org.apache.hadoop.ipc.ProtobufRpcEngineServerServerProtoBufRpcInvoker.call(ProtobufRpcEngine.java:523)
at org.apache.hadoop.ipc.RPCServer.call(RPC.java:991) at org.apache.hadoop.ipc.ServerServer.call(RPC.java:991)atorg.apache.hadoop.ipc.ServerRpcCall.run(Server.java:869)
at org.apache.hadoop.ipc.ServerRpcCall.run(Server.java:815) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875) at org.apache.hadoop.ipc.ServerRpcCall.run(Server.java:815)atjava.security.AccessController.doPrivileged(NativeMethod)atjavax.security.auth.Subject.doAs(Subject.java:422)atorg.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875)atorg.apache.hadoop.ipc.ServerHandler.run(Server.java:2675)

CDH重新启动namenode时报错,错误信息为:Error: recoverUnfinalizedSegments failed for required journal (JournalAndStream(mgr=QJM to [10.0.20.102:8485, 10.0.20.103:8485, 10.0.20.104:8485], stream=null)),而且提示等待120秒超时,无法响应。这与Hadoop分布式协议不一致有关,可能由于某个节点的欠缺或故障造成了段错误。建议检查所有节点的网络连接是否正常、端口是否打开,以及检查journal节点的状态。同时也需要检查在这个问题出现之前是否已经存在其他问题。如果仍然无法解决问题,建议向CDH官方技术支持组寻求帮助。

作者 east
Hive 4月 2,2023

如何把cdh中hive存储在表数据转换为pgsql

要把cdh中hive存储在表数据转换为pgsql,您可能需要以下步骤:

  1. 在cdh集群上配置一个外部账户,以便访问CDP云存储2。
  2. 在CDP Data Lake集群上创建一个Hive数据仓库,并设置相应的权限和配置1。
  3. 在CDH集群上使用Replication Manager服务创建一个Hive复制策略,选择要复制的数据库和表,并指定目标CDP Data Lake集群和存储位置2。
  4. 运行复制策略,并检查复制结果和日志2。
  5. 在CDP Data Lake集群上使用Beeline或其他客户端连接到Hive服务,并验证数据是否正确导入2。
  6. 在CDP Data Lake集群上使用以下命令将Hive表导出为CSV文件3:
DROP TABLE IF EXISTS TestHiveTableCSV;
CREATE TABLE TestHiveTableCSV ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' AS SELECT * FROM TestHiveTable;
  1. 在CDP Data Lake集群上使用以下命令将CSV文件复制到本地目录:
hadoop fs -copyToLocal /user/hive/warehouse/testhivetablecsv /tmp
  1. 在本地目录上使用以下命令将CSV文件导入到pgsql数据库:
psql -d testdb -c "COPY testpgtable FROM '/tmp/testhivetablecsv' WITH (FORMAT csv);"
作者 east
大数据开发 4月 1,2023

什么数据操作中的可观察性?

现在是早上 8 点,一位业务负责人正在查看财务绩效仪表板,质疑结果是否准确。几个小时后,一位客户登录到您公司的门户网站并想知道为什么他们的订单没有显示最新的定价信息。下午,数字营销主管很沮丧,因为来自他们的 SaaS 工具的数据源从未进入他们的客户数据平台。数据科学家也很沮丧,因为他们无法在没有加载最新数据集的情况下重新训练他们的机器学习模型。
这些是数据操作问题,它们很重要。企业应该正确地期望准确和及时的数据将被传送到数据可视化、分析平台、客户门户、数据目录、ML 模型,以及任何数据被消费的地方。
数据管理和数据操作团队花费大量精力构建和支持数据湖和数据仓库。理想情况下,它们由实时数据流、数据集成平台或 API 集成提供,但许多组织仍然有数据处理脚本和手动工作流,这些应该在数据债务清单上。不幸的是,数据管道的稳健性有时是事后才想到的,数据操作团队通常在解决数据集成中的源、管道和质量问题时反应迟钝。
在我的《数字开拓者》一书中,我写到数据集成工具较少的日子,手动修复数据质量问题是常态。 “每个数据处理应用程序都有一个日志,每个进程,无论有多少脚本以菊花链方式连接,也都有一个日志。在寻找失败进程的根本原因时,我成为了 sed、awk、grep 和 find 等 Unix 工具的向导,可以解析这些日志。”
今天,有比 Unix 命令更强大的工具来实现数据管道的可观察性。 Dataops 团队负责超越连接和转换数据源;他们还必须确保数据集成可靠地执行并有效地解决数据质量问题。
可观察性是 devops 团队采用的一种实践,可以通过客户旅程、应用程序、微服务和数据库功能进行跟踪。实践包括集中应用程序日志文件、监控应用程序性能以及使用 AIops 平台将警报关联到可管理的事件中。目标是创建可见性、更快地解决事件、执行根本原因分析、确定性能趋势、启用安全取证并解决生产缺陷。
Dataops 可观察性针对类似的目标,只是这些工具分析数据管道,确保可靠的数据交付,并帮助解决数据质量问题。
Monte Carlo 的联合创始人兼首席技术官 Lior Gavish 说:“数据可观察性是指组织在数据操作生命周期的每个阶段了解其数据健康状况的能力,从仓库或湖中的摄取到商业智能层,大多数数据质量问题都会暴露给利益相关者。”
Ascend.io 的首席执行官兼创始人 Sean Knapp 详细阐述了数据操作问题陈述:“可观察性必须有助于识别关键因素,例如管道的实时运行状态和数据形状的趋势,”他说。 “应及早发现延迟和错误,以确保在商定的服务水平内无缝传输数据。企业应该掌握管道代码中断和数据质量问题,以便可以快速解决这些问题,而不是传播给下游消费者。”
Knapp 强调商人是数据操作管道的主要客户。许多公司都在努力成为数据驱动的组织,因此当数据管道不可靠或不可信时,领导者、员工和客户都会受到影响。数据操作可观察性工具对于这些组织来说可能至关重要,尤其是当公民数据科学家将数据可视化和数据准备工具用作日常工作的一部分时。
Coralogix 的开发倡导者 Chris Cooney 说:“可观察性不仅仅是仪表板上呈现的几张图表。这是一种跨越整个堆栈的工程实践,使团队能够做出更好的决策。”
DevOps 团队通常使用多种监控工具来覆盖基础设施、网络、应用程序、服务和数据库。它类似于数据操作——同样的动机,不同的工具。 Calyptia 的创始人兼首席执行官 Eduardo Silva 说:“您需要有适当的系统来帮助理解这些数据,没有任何一种工具是足够的。因此,您需要确保您的管道可以将数据路由到各种目的地。”
Silva 推荐供应商中立的开源解决方案。这种方法值得考虑,尤其是因为大多数组织都使用多个数据湖、数据库和数据集成平台。这些数据平台之一内置的数据操作可观察性功能可能易于配置和部署,但可能无法提供跨平台工作的整体数据可观察性功能。
需要什么能力? Acceldata.io 的联合创始人兼首席技术官 Ashwin Rajeev 说:“企业数据可观察性必须有助于克服与​​构建和运行可靠数据管道相关的瓶颈。”
Rajeev 阐述道,“数据必须每次都通过使用适当的 API 和 SDK 仪器来高效地交付。工具应具有适当的导航和向下钻取功能,以便进行比较。它应该可以帮助数据操作团队快速识别瓶颈和趋势,以便更快地进行故障排除和性能调整,从而预测和预防事故。”
Dataops 可观察性的一个方面是操作:从源到数据管理平台再到消费的可靠性和准时交付。第二个问题是数据质量。 Coalesce 联合创始人兼首席执行官 Armon Petrossian 表示:“dataops 中的数据可观察性涉及确保业务和工程团队能够访问经过适当清理、管理和转换的数据,以便组织能够真正做出数据驱动的业务和技术决策。随着数据应用程序的当前发展,为了最好地准备数据管道,组织需要专注于提供代码优先方法的灵活性但基于 GUI 以实现企业规模的工具,因为毕竟不是每个人都是软件工程师”
因此,数据操作和数据可观察性必须具有吸引使用 API 和开发强大的实时数据管道的编码人员的能力。但非编码人员也需要数据质量和故障排除工具来处理他们的数据准备和可视化工作。
“就像 devops 广泛依赖低代码自动化优先工具一样,dataops 也是如此,”Gavish 补充道。 “作为数据操作生命周期的重要组成部分,数据可观察性解决方案必须易于跨多个数据环境实施和部署。”
对于许多大型企业而言,可靠的数据管道和应用程序并不容易实施。 Mphasis 首席解决方案官 Ramanathan Srikumar 表示:“即使有了此类可观察性平台的帮助,大型企业的团队也难以抢先预防许多事件。” “一个关键问题是,数据无法充分洞察流经多个云和遗留环境的交易。”
Teradata 的首席产品官 Hillary Ashton 对此表示赞同。 “现代数据生态系统本质上是分布式的,这就造成了在整个生命周期中管理数据健康的艰巨任务。”
然后她分享了底线:“如果你不相信你的数据,你永远不会成为数据驱动的。”
Ashton 建议,“对于高度可靠的数据管道,公司需要一个 360 度视图,通过查看遥测数据来集成运营、技术和业务元数据。该视图允许识别和纠正问题,例如数据新鲜度、缺失记录、模式更改和未知错误。在流程中嵌入机器学习也可以帮助自动化这些任务。”
在使用 Unix 命令解析日志文件以解决数据集成问题方面,我们已经走了很长一段路。今天的数据观察工具要复杂得多,但为企业提供可靠的数据管道和高质量的数据处理仍然是许多组织面临的挑战。接受挑战并与业务领导者合作进行敏捷和增量实施,因为基于不可信数据构建的数据可视化和 ML 模型可能会导致错误且可能有害的决策。

作者 east
大数据开发 3月 31,2023

数据科学的冰山一角

数据科学远不止是当今商业世界的一个时髦流行语,它正在重新定义公司与客户互动的方式。
无论是哪个行业——零售、保险、制造、银行、旅游——每个大企业都有自己处理数据科学的方式。他们必须。数据无处不在。这是新的黄金,挖掘这些数据对于任何企业的成败都至关重要。
数据提供了对区分竞争对手的信息的访问。数据驱动的公司为客户提供更好的服务并做出更好的决策——所有这些都是因为这些决策有数据支持。
数据科学是商业世界的下一个演变,那些不能适应这一新现实的将不复存在。另一种选择是灭绝。
这就是一家欧洲时装和服装零售连锁店面临的命运。成立于 1980 年代初,它以以客户为中心的高档面对面购物体验为基础。在线零售商的出现和激增对其业务造成了重大打击。当它的实体店开始挣扎时,这家店本可以认命,搬进历史的垃圾箱。
相反,它拥抱了数字化。
该公司将积极的客户体验作为重点,计划进行全渠道数字化转型,以管理客户、收集数据并提供客户所需的产品和服务。
它始于电子商务渠道的推出和 CRM 系统的构建,以通过忠诚度计划管理客户和收集数据。为了保持以客户为中心的商业精神,他们专注于开发专门的创新能力,以确保为消费者提供他们想要的产品和服务。最后,他们转向数字化客户流程并优化客户旅程。
如今,这家时尚零售商保留其实体店,让购物者能够看到和体验其提供的系列。在线商店被用作与部分客户互动并了解他们需要和想要什么的沟通渠道。
为了维持这种新方法,创建了八个数字团队,并且对所有可以衡量的东西进行了衡量。这种数字化转型使企业能够将其 90% 的收入追溯到最终客户。
对于尚未涉足数据科学游戏或在该领域迈出第一步的公司,第一个也是最重要的建议是要谦虚,承认这不是你一个人可以做的事情,并齐心协力专业团队。
数据科学是一个复杂的领域,要正确使用它,需要工程师、科学家和分析师开发人工智能平台,以识别、收集、评估和利用数据,以发挥最大优势。他们可以制定战略,确定所需数据的类型、收集数据的最佳方法、收集信息所需的系统以及如何确保数据干净和可用以便将其货币化。
该团队还可以开发支持数据捕获和收集所需的基础设施,包括 AI 或机器学习平台以及用于大计算机存储容量的云平台。
云平台是关键。它支持快速部署数据,并大大缩短了获得对企业及其客户的宝贵见解所需的时间。分析工程师可以构建可靠的数据管道,实现自助报告和可视化。
但是查看数百万个接触点并试图弄清楚如何从中提取有意义的信息可能是一项艰巨的任务。数据驱动不仅仅意味着解锁数据、存储数据并让每个人都可以访问。它是关于从收集到的信息中提取见解,以预测未来的见解,建议短期、中期和长期的投资方向,减少客户流失,预测需求,优化物流链或自动化业务流程。
在最有用的时候,数据科学会从大型数据集中提取不明显的模式,例如购买、预订、索赔或银行交易,以帮助企业做出更好的决策。
了解您的客户是任何企业的基本原则,客户购买模式的历史数据不仅是最常见和最容易访问的数据集,也是最重要的数据集之一。它可以预测未来的需求,并提供有价值的洞察力来影响未来的消费者选择。
客户关系管理 (CRM) 系统是有效使用数据科学的良好起点。零售商可以使用这些数据来识别具有相似行为和品味的客户群体,还可以更好地了解经常一起购买的产品。
北美领先的服装制造商之一,拥有令人自豪的 150 年历史,多年来建立了生产能力,扩大了销售网络,并投资于营销。但也许它今天最重要的举措是它的数据科学分析。数据科学部门直接向 CEO 报告,并与谷歌平台上的海量数据合作,以更有效地吸引客户。
在 COVID 大流行期间,随着越来越多的服装购物者被推到网上,公司的数据科学部门蓬勃发展,改善了公司的数字足迹,以收集尽可能多的消费者数据——谁在网上购物,谁在实体店购物,他们正在检查什么在网上,他们花了多少钱,他们如何支付他们的购买,他们最终购买了什么——并使用所有这些信息来创建配置文件和跟踪模式。
然后通过直接针对符合这些概况的消费者的营销活动将数据货币化。
随着数据科学的进步,客户交互变得更加个性化。重点不再是建立关于群体、特定市场或地区的广泛概况,而是越来越注重个人。
流媒体服务使用数据来改善用户体验。他们向观众推荐他们的算法确定个人可能喜欢的标题。简单的假设是,这只是基于观众之前可能观看过的内容。例如,因为您喜欢这部由汤姆·克鲁斯主演的动作片,也许您也会喜欢这部由汤姆·克鲁斯主演的另一部动作片。
然而,它比这复杂得多。流媒体将从通过分析来自世界各地的大量用户数据构建的原型配置文件开始。然后它将采用个人的观看模式(标题、流派、演员、季节性),将它们与来自世界各地的该个人资料中的其他人以及他们正在观看的内容交织在一起,以提出建议。
旅游和酒店业依靠数据科学帮助其从大流行中恢复过来。
几乎没有企业能幸免于大流行的负面影响,但旅游业却遭受重创。在大流行之前,全球机场运营市场的价值估计为 2210 亿美元。在大流行迫使边境关闭并几乎关闭了休闲航空旅行之后,这一数字暴跌至 946 亿美元。 2021 年略有改善,达到 1302 亿美元,但仍远未达到他们想要的水平。
面临的挑战是开发和实施数据驱动的解决方案,以更新收入流、优先考虑公共卫生、增强客户体验并支持可持续发展计划。
在提高运营效率的同时关注客户体验比以往任何时候都更加重要,预计将在未改变的财务目标参数范围内完成。
世界上最大的航空公司之一正在使用数据科学来预测与延误和取消的投诉和索赔相关的成本。这帮助航空公司解决了运营中断问题并提高了客户满意度。它还能够开发和推出新的解决方案,以改进在线支付方式、启动绩效警报系统以及优化维护资金的使用。
从客户服务到货运,该航空公司现在已经制定了收集和分析信息和开发新想法的流程,并对内部数据分析有了更深入的了解。
我们只站在数据科学冰山一角。数据科学已经是成功企业的重要组成部分,其用途将成倍增加。用不了多久,所有交易系统——购买、预订、银行业务——都将在工作流程中嵌入人工智能。数据分析将部署在每个企业的每个应用程序中。没有它,任何组织都无法在大量投资于数据分析的竞争中生存下来。

作者 east
大数据开发 3月 31,2023

为什么开发人员使用 Confluent 来管理 Apache Kafka

想象一下,您正在领取食品杂货,或者正在寻找关于接下来要在电视上看什么的推荐,或者正在使用信用卡而不用太担心欺诈。为这些交互提供支持的应用程序都依赖于动态数据,而且 Apache Kafka 很有可能为这些应用程序提供支持。
超过 80% 的财富 100 强企业使用 Kafka 作为事件流底层,为实时、面向用户的应用程序和软件驱动的后端提供支持。 Kafka 已成为任何希望通过不可变事件日志而不是可变数据存储来集成日益多样化的应用程序和微服务组合的组织的首选。好处是多方面的,但请记住,Kafka 是一个分布式系统,自愿自己操作分布式系统是一个越来越有争议的选择。
这就是云存在的原因。通过完全托管的云服务,供应商承担资本支出并积累良好运行基础架构所需的运营专业知识。 Confluent 是市场上第一个完全托管的 Kafka 服务,让您专注于构建应用程序和为业务增加价值,而不是在操作复杂的基础设施层上转动拨号盘。我想向您介绍一下 Confluent 如何为使用 Kafka 的人们的生活带来和平与简单。
对应用程序功能的需求总是大于交付它的能力。这意味着应用程序团队应该专注于创造他们可能创造的最大价值的活动。通常,这意味着提供可直接为客户和用户带来竞争优势的新功能。
当然,所有应用程序都需要存储和计算基础架构才能在持续开发和维护中发挥作用,从而分散了对创造价值的功能开发的注意力。对于 Kafka 来说尤其如此,因为分布式数据基础设施给决定自己操作它的团队带来了巨大的机会成本。简而言之:您的工作最终是照顾好您的客户。虽然运行 Kafka 可能是达到此目的的一种方法,但它可能不是完成工作的最实用方法。这一挑战是导致托管云服务兴起的众多原因之一。
弹性可扩展性一直是云神话的固有部分,但在实现过程中进展缓慢。在云历史的早期,数据库创新者应用新方法来实现海量数据集的水平弹性可扩展性。最近,微服务和容器编排帮助大众实现了应用程序的可扩展性。然而,众所周知,数据基础架构一直难以轻松扩展。
Kafka 有一个出色的水平扩展故事:主题被分区,单独的分区日志被分配给不同的代理,然后由可扩展的客户端应用程序集群使用。有一些可编写脚本的工具可以管理这些面向规模的功能,但自我管理的集群仍然需要大量的操作和技术专业知识。例如,随着集群随时间的变化,分区日志不会均匀分布在代理上。此外,随着业务条件的发展,还会添加新主题,并且分区可能会收到不均衡的读写流量。随着时间的推移,这只是集群管理员必须注意的事情之一。
Confluent 具有内置的弹性可扩展性。集群吞吐量从 0 扩展到 100MBps,无需干预,通过一个简单的 Web UI 可达到 11GBps(撰写本文时的当前记录)——无需移动分区,无需重新平衡代理。随着世界慢慢赶上云最初的弹性规模承诺,Confluent 以真正的云原生方式为数据基础设施带来规模。
无论如何,您的生活将是多云的,因此数据基础架构层需要具有多云能力才能成为有力的竞争者。 Confluent 是多云,原生支持 AWS、Microsoft Azure 和 Google Cloud。当您需要在多个云上运行,或者至少能够威胁到时,这种灵活性是必不可少的。 Confluent 通过使用单一的管理 Web UI 和从特定云基础设施中抽象出来的统一控制平面,使这一切变得简单。
但多云并不总是足够的!有时您不想将所有内容都移动到云端。许多公司希望混合使用本地、私有云或公共云服务。这种混合云体验是 Confluent 的首要考虑因素,可以通过 Confluent UI 维护备份服务、隔离产品和管理复杂的 B 计划。
正如 Kafka 社区在其诞生 10 年中所发现的那样,要构建成功的事件驱动系统,您需要的不仅仅是分布式日志。您还需要在所有系统和流之间建立可靠且安全的连接,这绝非易事。然后你就可以开始通过实时流处理从整个系统中提取价值。
围绕核心 Kafka 功能出现了几个组件,以帮助满足来自开源生态系统和 Confluent 的这些需求:
这些组件的事实是团队最终将需要它们。正是出于这个原因,他们从 Kafka 社区和 Confluent 中脱颖而出。几乎不可能精通这些领域中的每一个领域来构建不需要持续关注即可平稳运行的解决方案。
借助 Confluent,您可以轻松获得使用 Kafka 取得成功所需的所有工具。您可以使用一个平台,您需要的一切都以无缝、集成的方式提供,包括数百个连接到流行数据源的连接器。
Kafka 有一个最小可行的安全故事:它提供强大的动态数据加密和基于 ACL 的身份验证和授权作为选项。 Confluent 以企业期望的方式扩展了这些功能。
例如,Confluent 中的所有数据在静态和动态中都是加密的。最重要的是,应用程序还需要对每次调用进行身份验证,从而消除意外拥有“完全开放”端口的威胁。
Confluent 的各种其他功能有助于简化安全性,包括基于 SAML 的单点登录和对 VPC 中其他云资源的安全访问。
作为这些安全功能的证明,Confluent 符合许多行业标准和认证成就,符合 PCI、HIPAA 和 GDPR 以及 SOC1、SOC2、SOC3 和 ISO 27001 认证的要求。
在获得所有这些认证的同时还提供许多其他开箱即用的安全和方便的功能是一项挑战。开发人员可以放心地构建,同时将繁重的安全提升留给托管平台。
但不要只相信我的话。您可以通过 Confluent 或您选择的云提供商免费试用我们完全托管的 Kafka 服务。
Tim Berglund 是 Confluent 的开发者宣传高级总监。

作者 east
大数据开发 3月 30,2023

云和大型计算如何重塑 HPC

大约 25 年前,一些开源技术结合起来形成了一个强大的商业互联网,它终于准备好开展业务并拿走你的钱了。这种开源组合被称为 LAMP 堆栈(Linux、Apache HTTP Server、MySQL 和 PHP/Perl/Python),成为一代开发人员的标准开发堆栈。
现在别看,但我们很可能正处于另一个 LAMP 堆栈时刻的风口浪尖。
然而,这一次的重点不是建立一种新的在线方式来兜售狗粮。取而代之的是,一场新技术复兴正在进行,以解决算法复杂、消耗大量计算资源的大规模工作负载。想想为 COVID-19 接种疫苗、建造新的超音速喷气式飞机或驾驶自动驾驶汽车。科学和工程界正在以前所未有的令人眼花缭乱的速度更快地发展和提供更新的创新。
如何?云。但不仅仅是云。
云对于正在发生的事情的描述可能过于简单。对于这种转变,我们缺乏巧妙的简写,例如互联网的 LAMP 堆栈。有些东西突然解放了博士类型,可以在极其复杂的计算引擎上进行创新,为算法驱动的工作负载提供动力,这些工作负载正在以比早期 Friendster 或 Pets.com 承诺提供的方式更深刻的方式改变我们的生活。
“高性能计算”(HPC) 是与这些工作负载相关的最常见标签。但那是在公共云成为这些新应用程序的可行平台之前。浏览世界上最快的超级计算机 500 强榜单,您会看到越来越多的超级计算机基于公有云。这并非巧合:本地超级计算机和大型 Linux 集群已经存在了几十年(在商业互联网之前),但这种新趋势——有时被称为“大计算”或“深度技术”——在很大程度上依赖于云。
正如咨询公司 BCG 所说,“计算能力的增强和成本的下降以及技术平台的兴起是最重要的贡献者。云计算正在稳步提高性能并扩大使用范围。”
但这个新的“堆栈”不仅仅与云有关。相反,它取决于技术的三大趋势:仿真软件、专用硬件和云的广度和深度迅速增加。这些是当今每个快速发展的研究和科学团队都在利用的技术构建模块,也是为什么出现了数百家初创公司来撼动十年或更长时间前整合的长期垂死行业的原因。
就像 LAMP 堆栈的神奇时刻一样,今天的重要计算/深度技术时刻都是为了提高工程生产力。云对此至关重要,尽管它本身还不够。
以航空航天为例。传统上,航空工程师会依赖本地 HPC 集群来模拟与起飞和着陆相关的所有必要变量,以设计新的超音速喷气式飞机。相比之下,初创航空航天公司直接采用了云计算,其弹性基础架构使他们能够对应用程序进行建模和模拟,而无需在同事后面排队等待高度专业化的 HPC 硬件。构建和维护硬件的时间更少。更多时间进行实验和工程设计。这就是大型计算云方法的美妙之处。
将其与各种模拟软件相结合,可以在实际构建和原型化复杂的物理事物之前对新的创新进行建模。随着摩尔定律耗尽,专用硬件为这些算法复杂的模拟提供动力。云越狱了本地超级计算机和集群的所有这些,使得创建和运行模型、迭代和改进以及在移动到物理原型之前再次运行它们变得容易了一个数量级。 (要明确的是,这种大型计算/深度技术的大部分是关于构建物理事物,而不是软件。)
这个领域的棘手之处在于使它们运行所需的自定义硬件和软件配置以及优化其性能所需的复杂工作流程。这些类型的算法密集型工作负载需要越来越专业的 GPU 和其他更新的芯片架构。正在支付昂贵的博士学位以设计下一个伟大的涡轮机或喷气推进秘方的公司不希望通过强迫他们学习如何使用模拟软件和硬件组合来建立机器来让他们陷入困境。
“15 年前,这个 HPC 领域的任何公司都根据其在本地运行硬件的程度来脱颖而出,并且基本上押注摩尔定律将继续在 x86 架构上逐年提供持续更好的性能,”Joris 说Rescale 首席执行官 Poort 在接受采访时表示。 “如今最重要的是速度和灵活性——确保您的博士在他们的工作中使用最好的模拟软件,使他们免于成为专业大型计算基础设施的专家,这样他们就可以更快地推出新的创新。”
每家公司最终都会在云中使用模拟和专用硬件吗?可能不会。今天,这是火箭、推进、计算生物学、运输系统以及世界上 1% 最难计算挑战的领域。但是,尽管大型计算被用来解决当今最令人讨厌的问题,但我们肯定会看到新一波 Netflix 使用云、模拟软件和专用硬件的这种 LAMP 堆栈组合推翻世界大片。

作者 east
大数据开发 3月 29,2023

Databricks 开源其 Delta Lake 数据湖屋

为了消除数据湖和数据仓库竞争对手的疑虑,Databricks 周二表示,作为 Delta Lake 2.0 版本的一部分,它正在开源所有 Delta Lake API。该公司还宣布将把 Delta Lake 的所有增强功能贡献给 Linux 基金会。
Cloudera、Dremio、谷歌(Big Lake)、微软、甲骨文、SAP、AWS Snowflake、HPE(Ezmeral)和Vertica等Databricks竞争对手对该公司提出批评,质疑Delta Lake是开源还是专有,从而抢走了份额潜在客户,分析师说。
Ventana Research 研究总监 Matt Aslett 表示:“新公告应该为用户提供连续性和清晰度,并有助于消除关于 Delta Lake 是专有还是开源的混淆(部分是由竞争对手引起的)。”
Constellation Research 首席分析师 Doug Henschen 表示,通过这些公告,Databricks 正在平息客户的担忧和竞争批评。
“在竞争性交易中,像 Snowflake 这样的竞争对手会向潜在客户指出 Delta Lake 的某些方面是专有的,”Henschen 说,并补充说 Databricks 客户现在可以相信他们的数据在一个开放平台上,而不是锁定在三角洲湖中。
Databricks 将 Delta Lake 称为数据湖屋,这是一种同时提供存储和分析功能的数据架构,与以本机格式存储数据的数据湖和存储结构化数据(通常以 SQL 格式)的数据仓库的概念形成对比).
随着数据湖市场上越来越多的商业开源项目,Databricks 的 Delta Lake 可能会发现自己面临新的竞争,包括 Apache Iceberg,它为超大的分析表提供高性能查询。
“还有最近开始商业化的开源项目,例如 Apache Hudi 的 OneHouse 以及 Starburst 和 Dremio 都推出了 Apache Iceberg 产品,”Amalgam Insights 首席分析师 Hyoun Park 说。
“随着这些产品的推出,Delta Lake 面临着来自其他开源 lakehouse 格式的压力,要求它在功能上变得更加强大,因为 lakehouse 市场开始分裂,技术人员有多种选择,”Park 补充道。
Ventana 的 Aslett 说,这个领域的许多其他参与者都专注于 Apache Iceberg 作为 Delta Lake 表的替代品。与在行和列中存储数据的传统表相比,增量表可以访问 ACID(原子性、一致性、隔离性和持久性)事务来存储元数据,以帮助加快数据摄取。
4 月,谷歌宣布支持 Big Lake 和 Iceberg,本月早些时候,Snowflake 宣布在私人预览版中支持 Apache Iceberg 表。
Henschen 说,Iceberg 的公告,就像 Databricks 的开源战略一样,旨在吸引潜在客户,他们可能担心只与一家供应商合作,并且担心在未来访问自己的数据会受到阻碍。
Gartner 前研究副总裁 Sanjeev Mohan 表示,面对新的竞争,Databricks 转向开源 Delta Lake 是一个很好的举措。
“Databricks 宣布开源 Delta Lake 的全部功能是推动更广泛采用的极好一步,”Gartner 前大数据和分析研究副总裁 Sanjeev Mohan 说。
该公司表示,Databricks 的 Delta Lake 2.0 将于今年晚些时候全面上市,预计将为数据分析提供更快的查询性能。
Databricks 周二还发布了第二版 MLflow——一个用于管理端到端机器学习生命周期 (MLOps) 的开源平台。
MLflow 2.0 附带 MLflow Pipelines,它根据数据科学家正在构建的模型类型为数据科学家提供预定义的、生产就绪的模板,使他们能够加速模型开发,而无需生产工程师的干预,该公司表示。
据分析师称,MLflow 2.0 将成为数据科学家的一个更成熟的选择,因为机器学习生产仍然是一个具有挑战性的过程,并且将算法模型转换为安全管理资源上的生产级应用程序代码仍然很困难。
“这个领域有许多供应商解决方案,包括 Amazon Sagemaker、Azure Machine Learning、Google Cloud AI、Datarobot、Domino Data、Dataiku 和 Iguazio。但与超大规模计算器和 Databricks 的统一方法相比,Databricks 是一个中立的供应商数据和模型管理是 MLOps 供应商的一个差异化因素,后者专注于模型操作化的编码和生产挑战,”Amalgam 的 Park 说。
Henschen 说,发布 MLflow 2.0 的举措简化了将流媒体和流媒体分析引入生产数据管道的途径,并补充说许多公司都在与 MLOps 作斗争,甚至在成功创建机器学习模型后也失败了。

作者 east
大数据开发 3月 29,2023

什么是数据湖?用于大数据分析的大规模可扩展存储

2011 年,时任商业智能公司 Pentaho 首席技术官的 James Dixon 创造了数据湖一词。他将数据湖与当时流行的数据集市典型的信息孤岛进行了对比:
从那时起,数据湖不断发展,现在与数据仓库竞争大数据存储和分析的份额。各种工具和产品支持在数据湖中进行更快的 SQL 查询,所有三大云提供商都提供数据湖存储和分析。甚至还有新的 Data Lakehouse 概念,它将治理、安全和分析与负担得起的存储相结合。本文深入探讨了数据湖,包括它们是什么、如何使用以及如何确保您的数据湖不会变成数据沼泽。
数据湖本质上是一个单一的数据存储库,它保存您的所有数据,直到它准备好进行分析,或者可能只保存不适合您的数据仓库的数据。通常,数据湖以其本机文件格式存储数据,但数据可能会转换为另一种格式以提高分析效率。拥有数据湖的目标是从数据中提取业务或其他分析价值。
数据湖可以托管图像和视频等二进制数据、PDF 文档等非结构化数据、CSV 和 JSON 文件等半结构化数据,以及通常来自关系数据库的结构化数据。结构化数据对分析更有用,但半结构化数据可以很容易地导入到结构化形式中。通常可以使用智能自动化将非结构化数据转换为结构化数据。
问题不在于您是否需要数据湖或数据仓库;您很可能需要两者,但出于不同的目的。也可以将它们结合起来,我们将很快讨论。首先,让我们看看数据湖和数据仓库之间的主要区别:
数据集市是仅限于来自单个部门或业务单位的数据的分析数据库,与数据仓库相反,数据仓库以适合分析的形式组合了公司的所有关系数据。数据集市通过仅包含与部门相关的数据来提供有效的分析;因此,它们本质上是孤立的。一些人声称孤岛并不重要,因为业务部门不需要被排除的数据。在现实生活中,这通常很重要——总有上级需要基于来自多个业务部门的综合数据的报告。这就是为什么我们目前看到很多数据湖和数据仓库,而很少有数据集市的原因之一。
当您将原始数据存储在数据湖中时,在数据工程师或数据科学家对其进行处理之前,数据可能对业务分析师毫无用处。除了过滤和数据转换之外,数据湖还需要数据目录、数据安全和模式定义。不幸的是,没有这些功能的数据湖的简写术语是数据沼泽。
幸运的是,有很多工具可以帮助过滤和组织数据湖中的数据。例如,您可以通过创建 ORC 格式的 Hive 元存储来解决对架构的需求。设置完成后,元存储通过像 Presto 这样的大规模并行 SQL 引擎支持快速 SQL 查询。 (Optimized Row Columnar 格式是一种压缩的列式存储,针对 Hive 进行了优化,并且可以很好地与 Presto 配合使用。)
Apache Spark 是另一个大规模并行 SQL 引擎。虽然它可以与 ORC 格式一起使用,但它与另一种压缩的列式存储 Parquet 一起使用时效果更好。 Spark 可以对 Parquet 文件执行垂直和水平分区,生成只需要读取必要数据并可以跳过不相关数据的查询计划。
Databricks 是 Spark 和 MLflow 背后的公司,提供他们所谓的数据湖屋。根据 Databricks 的说法,lakehouse 结合了数据仓库和数据湖的最佳特性:
Databricks 开源的 Delta Lake 通过直接对数据湖中的数据提供可靠性和高性能构成了 Lakehouse 的基础。 Databricks Lakehouse Platform 还包括 Unity Catalog,它为数据和 AI 提供细粒度的治理。 Databricks 声称其 Data Lakehouse 提供的性价比是数据仓库的 12 倍。
过去,数据湖是使用商用计算机的 Apache Hadoop 集群和 HDFS(Hadoop 分布式文件系统)在本地实施的。 Hadoop 集群曾经是 Cloudera、Hortonworks 等公司的大生意。 Cloudera 和 Hortonworks 在 2018 年合并,这告诉你一些关于市场方向的信息。
发生变化的是云,特别是超大规模公共云供应商亚马逊网络服务 (AWS)、微软 Azure 和谷歌云平台 (GCP)。这三个云提供商都提供数据湖存储产品:Amazon Simple Storage Service (Amazon S3) 和 Amazon EMR(以前称为 Amazon Elastic MapReduce)、Azure Data Lake Store (ADLS) 和 Google Cloud Storage (GCS)。这三者还提供数据摄取、数据处理、分析和机器学习的服务。与在数据中心管理 Hadoop 集群相比,创建、管理和扩展云数据湖要容易得多,也快得多;权衡是云中的长期运营支出最终将变得巨大。
早些时候,我讨论了使用 Presto 和 Apache Spark 在数据湖上进行更快的 SQL 查询。 SQL 只是分析数据的其中一种方法,尽管它非常重要并且通常是第一步。此外,考虑使用 Power BI、Tableau 或 Qlik 等商业智能工具; Jupyter、Zeppelin 或 Spark 笔记本;机器学习,例如 scikit-learn、SparkML 或 KNIME;和深度学习,例如 TensorFlow 或 PyTorch。
超大规模云供应商拥有自己的分析和机器学习工具,可以连接到他们的数据湖。
Amazon Athena 使用 Presto 和 Hive 对 Amazon S3 中的数据执行 SQL 查询。 Amazon EMR 是一个云大数据平台,用于使用 Apache Spark、Apache Hive 和 Presto 等开源分析框架运行大规模分布式数据处理作业、交互式 SQL 查询和机器学习应用程序。 Amazon SageMaker 是一项完全托管的服务,用于构建、训练和部署机器学习模型。
Azure Data Lake Analytics (ADLA) 是一种较旧的按需(无服务器)分析作业服务,可简化大数据,并使用 U-SQL,即 SQL 加 C#。 ADLA 正在被 Azure Synapse Analytics 取代,这是一种无限的分析服务,将数据集成、企业数据仓库和大数据分析结合在一起。它使您可以使用无服务器或专用选项大规模地按您的条件自由查询数据。 Synapse 结合了数据湖、企业数据仓库和就地运营数据查询功能,可以自动从 ADLA 和数据仓库迁移数据和代码。 Synapse 与 Azure 机器学习、Azure 认知服务和 Power BI 深度集成。
Google Cloud Storage 提供与许多强大的 Google Cloud 服务的原生集成,例如 BigQuery(数据仓库)、Dataproc(Hadoop 生态系统)、Dataflow(无服务器流分析)、Video Intelligence API、Cloud Vision API 和 AI Platform。
总之,您可以非常灵活地选择合适的工具来分析您的数据。
自 Hadoop 集群和 MapReduce 时代以来,数据湖变得更加有用。 Presto 和 Apache Spark 提供比 MapReduce 快得多的 SQL 处理器,这要归功于内存中和大规模并行处理以及基于 Hive 的模式。与商用计算机的本地集群相比,基于云的数据湖更容易创建、管理和扩展。云数据湖与各种分析和人工智能工具紧密集成。

作者 east
大数据开发 3月 28,2023

为什么 Apache Iceberg 将统治云中的数据

云使数据团队能够收集大量数据并以合理的成本进行存储,从而为利用数据湖、数据网格和其他现代架构的新分析用例打开了大门。但是对于非常大量的数据,通用云存储在如何访问、管理和使用这些数据方面也提出了挑战和限制。
云中典型的 blob 存储系统缺乏显示文件之间关系或它们与表的对应方式所需的信息,这使得查询引擎的工作变得更加困难。此外,文件本身并不能使更改表的模式或在其上“时间旅行”变得容易。每个查询引擎必须有自己的如何查询文件的视图。突然之间,看似易于实现的数据架构变得比预期的更难。
这就是将表格格式应用于数据变得非常有用的地方。表格式明确定义了一个表、它的元数据和构成该表的文件。客户端不是在读取数据时应用架构,而是在运行查询之前就已经知道架构。此外,表元数据可以以提供更细粒度分区的方式保存。因此,将表格格式应用于数据可以提供许多优势,例如:
选择要使用的表格格式是一个重要的决定,因为它可以启用或限制可用的功能。在过去的两年里,我们看到 Apache Iceberg 获得了大量支持,这是一种最初由 Netflix 开发的表格格式,于 2018 年作为 Apache 孵化器项目开源,并于 2020 年从孵化器项目中毕业。
Iceberg 的构建是为了解决 Apache Hive 在处理超大数据集时遇到的一些挑战,包括规模、可用性和性能方面的问题。正如 Netflix 工程师当时指出的那样,超大规模数据集的表格格式应该像 SQL 一样可靠且可预测地工作,“没有任何不愉快的意外”。
有多种选择,我们相信 Iceberg 优于其他可用的开放式表格格式。这里有五个原因。
过去会对表格格式今天的工作方式产生重大影响。一些表格格式是从旧技术发展而来的,而另一些表格格式则一刀切。 Iceberg 属于后者。它是从头开始构建的,以解决 Apache Hive 中的缺点,这意味着它避免了过去阻碍数据湖的一些不良特性。如何处理架构更改(例如重命名列)就是一个很好的例子。
展望未来,这也意味着 Iceberg 不需要合理化如何在不导致生产数据应用程序出现问题的情况下进一步脱离相关工具。随着时间的推移,其他表格格式可能会迎头赶上,但截至目前,Iceberg 专注于提供下一组新功能,而不是回顾过去解决旧问题。
通过将处理引擎与表格格式分离,Iceberg 提供了更大的灵活性和更多选择。工程师不必被迫使用一种处理引擎,而是可以选择最适合工作的工具。选择之所以重要,至少有两个关键原因。首先,公司用来处理数据的引擎会随着时间而改变。例如,许多企业从 Hadoop 迁移到 Spark 或 Trino。其次,大型组织使用多种不同的技术是很常见的,并且有选择权使他们能够交替使用多种工具。
Iceberg 还支持多种文件格式,包括 Apache Parquet、Apache Avro 和 Apache ORC。这在今天提供了灵活性,但也为将来可能出现的文件格式提供了更好的长期可插拔性。
Iceberg 项目由 Apache 软件基金会管理,这意味着它遵循几个重要的 Apache Ways,包括赢得权威和共识决策。对于自称为“开源”的每个项目来说,情况不一定如此。 Apache Iceberg 公开其项目管理,因此您知道谁在运行该项目。其他表格格式没有透露谁有决策权。表格格式是数据架构中的基本选择,因此选择真正开放和协作的项目可以显着降低意外锁定的风险。
有几个迹象表明,围绕 Apache Iceberg 的协作社区正在使用户受益,并为项目的长期成功奠定基础。对于用户而言,Slack 频道和 GitHub 存储库显示出很高的参与度,无论是围绕新想法还是对现有功能的支持。至关重要的是,参与来自整个行业,而不仅仅是一个团体或 Iceberg 的原作者。
高度协作也有利于技术本身。该项目正在征求越来越多的提案,这些提案的想法各不相同,可以解决许多不同的用例。此外,该项目正在催生新的项目和想法,例如 Project Nessie、Puffin Spec 和开放元数据 API。
与其他一些表格项目不同,Iceberg 从一开始就内置了以性能为导向的功能,这在几个方面对用户有益。首先,用户通常假设一个具有开放代码的项目包含性能特性,却发现它们不包含在未来或含糊地承诺。其次,如果你想移动工作负载,使用表格格式应该很容易,你不太可能在 Iceberg 实现中遇到实质性差异。第三,一旦你开始使用开源 Iceberg,你就不太可能发现你需要的功能隐藏在付费专区后面。什么是开放的和什么不是开放的之间的区别也不是时间点问题。
作为一个从一开始就开放的项目,Iceberg 的存在是为了解决一个实际问题,而不是一个业务用例。这是一个很小但很重要的区别:拥有为 Iceberg 提供支持的付费产品的供应商,例如 Snowflake、AWS、Apple、Cloudera、Google Cloud 等,可以在他们实施 Iceberg 规范的程度方面展开竞争,但 Iceberg 项目本身无意为特定公司推动业务。
在 Snowflake,我们很早就创建了自己的表格格式,从而启用了各种新功能。但随着企业转向云数据平台,他们的需求和时间表会有所不同。一些公司有限制数据存储位置的监管要求,或者有他们需要保护的现有投资。
支持像 Iceberg 这样的外部表格式使我们的客户能够利用 Snowflake 中的所有数据,即使其中一些数据需要驻留在不同的位置。这就是为什么我们在今年早些时候在 Snowflake 中添加了对 Iceberg 作为附加表选项的支持,并且最近推出了一种名为 Iceberg Tables 的新型 Snowflake 表。
Apache Iceberg 社区中有一些优秀的资源,可用于了解有关该项目的更多信息并参与开源工作。

作者 east
大数据开发 3月 28,2023

如何将 R 与 BigQuery 结合使用

您是否希望将驻留在 Google BigQuery 中的数据作为 R 工作流程的一部分进行分析?多亏了 bigrquery R 包,这是一种非常无缝的体验——一旦你知道在这些数据上运行 dplyr 函数需要一些小的调整。
不过,首先,您需要一个 Google Cloud 帐户。请注意,即使数据在其他人的帐户中并且您不打算存储自己的数据,您也需要自己的 Google Cloud 帐户。
许多人已经拥有用于 Google 云端硬盘或 Gmail 等服务的通用 Google 帐户。如果您还没有,请务必创建一个。
然后,前往 https://console.cloud.google.com 上的 Google Cloud Console,使用您的 Google 帐户登录,并创建一个新的云项目。 R 老手注意:虽然在 RStudio 中工作时项目是个好主意,但在 Google Cloud 中它们是强制性的。
单击新建项目选项以创建新项目。
您应该会在 Google Cloud 顶部导航栏的左侧看到创建新项目的选项。单击“Google Cloud Platform”右侧的下拉菜单(如果您还没有任何项目,它可能会显示“选择项目”)。给你的项目一个名字。如果您已经在您的 Google 帐户中启用了结算功能,您将需要选择一个结算帐户;如果你不这样做,那可能不会作为一个选项出现。然后点击“创建”。
如果您不喜欢分配给项目的默认项目 ID,可以在单击“创建”按钮之前对其进行编辑。
如果你不喜欢为你的项目自动生成的项目 ID,你可以编辑它,假设你没有选择已经采取的东西。
完成新项目设置后,您会看到一个通用的 Google Cloud 仪表板,它看起来有点让人不知所措。这些都是什么?BigQuery 在哪里?您可能不需要担心大多数其他服务,但您确实希望能够在所有这些服务中轻松找到 BigQuery。
如果您只想使用一项服务,初始的 Google Cloud 主屏幕可能会有点让人不知所措。 (我已经删除了这个项目。)
一种方法是将 BigQuery“固定”到左侧导航菜单的顶部。 (如果您没有看到左侧导航,请单击左上角的三行“汉堡包”将其打开。)一直向下滚动,找到 BigQuery,将鼠标悬停在它上面,直到您看到一个图钉图标,然后单击图钉。
向下滚动到 Google Cloud 主屏幕左侧导航的底部,找到 BigQuery 服务。您可以通过将鼠标悬停在上面来“固定”它,直到看到固定图标,然后单击它。
现在,BigQuery 将始终显示在您的 Google Cloud Console 左侧导航菜单的顶部。向上滚动,您会看到 BigQuery。单击它,您将进入带有项目名称的 BigQuery 控制台,其中没有任何数据。
如果“编辑器”选项卡没有立即可见,请单击右上角的“编写新查询”按钮。
怎么办?人们通常通过使用可用的公共数据集来开始学习 BigQuery。您可以将其他用户的公共数据项目固定到您自己的项目中,包括一套由 Google 收集的数据集。如果您在您一直使用的同一个 BigQuery 浏览器选项卡中转到此 URL,Google 公共数据项目应该会自动将自己固定到您的项目。
感谢 GitHub 上的 JohannesNE 提供此提示:您可以使用下面显示的 URL 结构固定您可以访问的任何数据集。
如果这不起作用,请检查以确保您使用的是正确的 Google 帐户。如果您在浏览器中登录了多个 Google 帐户,您可能会被发送到与预期不同的帐户。
固定项目后,单击该固定项目名称左侧的三角形(在本例中为 bigquery-public-data),您将看到该项目中可用的所有数据集。 BigQuery 数据集就像一个传统的数据库:它有一个或多个数据表。单击数据集旁边的三角形以查看它包含的表格。
单击 BigQuery 网络界面中的表,您可以查看其架构,以及用于预览数据的选项卡。
单击表名以查看其架构。还有一个“预览”选项卡,可让您查看一些实际数据。
还有其他更少点击式的方法来查看您的数据结构。但首先….
BigQuery 对数据存储和数据查询都收费。当使用其他人创建的数据集时,他们需要为存储付费。如果您在 BigQuery 中创建和存储自己的数据,则需要付费——无论您是唯一一个使用它的人、与其他几个人共享数据还是将其公开,费率都是一样的。 (您每月可获得 10 GB 的免费存储空间。)
请注意,如果您对其他人的数据进行分析并将结果存储在 BigQuery 中,则新表将成为您的存储分配的一部分。
查询的价格基于查询处理的数据量而不是返回的数据量。这个很重要。如果您的查询在分析 4 GB 数据集后仅返回前 10 个结果,则该查询仍将使用您的 4 GB 数据分析配额,而不仅仅是与您的 10 行结果相关的少量数据。
您每月免费获得 1 TB 的数据查询;为分析而处理的每额外 TB 数据的成本为 5 美元。
如果你直接在数据上运行 SQL 查询,谷歌建议永远不要运行 SELECT * 命令,它会遍历所有可用的列。相反,只选择您需要减少需要处理的数据的特定列。这不仅可以降低您的成本;它还使您的查询运行得更快。我对我的 R dplyr 查询做同样的事情,并确保只选择我需要的列。
如果您想知道如何在查询运行之前知道您的查询将使用多少数据,答案很简单。在 BigQuery 云编辑器中,您可以在不运行查询的情况下键入查询,然后查看它将处理多少数据,如下面的屏幕截图所示。
使用 Web 界面中的 BigQuery SQL 编辑器,您可以在其数据集和项目下找到您的表。在不运行查询的情况下键入查询会显示它将处理多少数据。请记住在查询中使用 `projectname.datasetname.tablename`
即使您不了解 SQL,您也可以通过简单的 SQL 列选择来了解 R 中的成本,因为任何额外的过滤或聚合都不会减少分析的数据量。
因此,如果您的查询运行在 table-id 中名为 columnA、columnB 和 columnC 的三个列上,并且 table-id 在 dataset-id 中,它是 project-id 的一部分,您只需在查询编辑器中键入以下内容:
不要运行查询,只需键入它,然后查看右上角的行以查看将使用多少数据。无论您的 R 代码将对该数据做什么,都不会影响查询成本。
在上面的屏幕截图中,您可以看到我从 schedules 表中选择了三列,这是棒球数据集的一部分,是 bigquery-public-data 项目的一部分。
对元数据的查询是免费的,但您需要确保正确构建查询以符合查询条件。例如,使用 SELECT COUNT(*) 获取数据集中的行数是不收费的。
您还可以采取其他措施来限制成本。有关更多提示,请参阅 Google 的“控制 BigQuery 中的成本”页面。
不,您不需要信用卡即可开始使用 BigQuery。但是如果不启用计费,您的帐户就是一个 BigQuery“沙盒”,并非所有查询都有效。我强烈建议向您的帐户添加计费来源,即使您极不可能超出免费 BigQuery 分析的配额。
现在——终于! — 让我们看看如何使用 R 进入 BigQuery。
我将在本教程中使用 bigrquery 包,但您可能还需要考虑其他选项,包括 obdc 包或 RStudio 的专业驱动程序及其企业产品之一。
要使用 R 和 bigrquery 查询 BigQuery 数据,您首先需要使用以下语法建立与数据集的连接:
第一个参数是 bigrquery 包中的 bigquery() 函数,它告诉 dbConnect 您想要连接到 BigQuery 数据源。其他参数概述了项目 ID、数据集名称和计费项目 ID。
(连接对象几乎可以被称为任何东西,但按照惯例,它们通常被命名为 con。)
下面的代码加载 bigrquery 和 dplyr 库,然后创建与棒球数据集中的时间表表的连接。
bigquery-public-data 是项目参数,因为那是数据集所在的地方。 my_project_id 是计费参数,因为我的项目的配额将针对查询“计费”。
当我运行这段代码时,除了创建一个连接变量外,什么也没发生。但我第一次尝试使用该连接时,系统会要求我在浏览器窗口中验证我的 Google 帐户。
例如,要列出棒球数据集中所有可用的表,我会运行以下代码:
要在 R 中查询一个特定的 BigQuery 表,请使用 dplyr 的 tbl() 函数创建一个引用该表的表对象,例如使用我新创建的棒球数据集连接的时间表表:
如果您使用基本 R str() 命令检查 sked 的结构,您将看到一个列表,而不是数据框:
幸运的是,像 glimpse() 这样的 dplyr 函数通常可以与这种类型的对象(类 tbl_BigQueryConnection)无缝地工作。
运行 glimpse(skeds) 将主要返回您所期望的——除了它不知道数据中有多少行。
这告诉我 glimpse() 可能不会解析整个数据集——这意味着它很有可能不会增加查询费用,而是查询元数据。当我在运行该命令后检查我的 BigQuery Web 界面时,确实没有查询费用。
您可以对表对象运行 dplyr 命令,其方式与对传统数据框的操作方式几乎相同。但您可能还需要一个补充:将通常的 dplyr 工作流程的结果通过管道传输到 collect() 函数中。
下面的代码使用 dplyr 查看 skeds 表对象中的年份和主队,并将结果保存到 tibble(tidyverse 软件包套件使用的特殊类型的数据框)。
定价说明:我使用寻求相同信息的 SQL 语句检查了上述查询:
当我这样做时,BigQuery Web 编辑器显示只处理了 21.1 KiB 的数据,不超过 10 MB。为什么我的账单多了这么多?查询最小为 10 MB(并四舍五入到下一个 MB)。
旁白:如果您想将 R 查询的结果存储在临时 BigQuery 表而不是本地数据框中,您可以将 compute(name = “my_temp_table”) 添加到管道的末尾而不是 collect()。然而,你需要在一个你有权创建表的项目中工作,而谷歌的公共数据项目绝对不是那个。
如果您在没有 collect() 的情况下运行相同的代码,例如
您正在保存查询而不是查询的结果。请注意,available_teams 现在是一个具有类 tbl_sql、tbl_BigQueryConnection、tbl_dbi 和 tbl_lazy 的查询对象(惰性意味着它不会运行,除非特别调用)。
您可以在脚本中单独使用对象名称来运行保存的查询:
您可以在链式管道的末尾使用 show_query() 看到由 dplyr 语句生成的 SQL:
您可以将此 SQL 剪切并粘贴到 BigQuery 网络界面中,以查看您将使用多少数据。只需记住将普通表名(如“schedules”)更改为语法“project.dataset.tablename”;在这种情况下,`bigquery-public-data.baseball.schedules`。
如果您在 R 会话中第二次运行完全相同的查询,您将不会再次为数据分析付费,因为 BigQuery 将使用缓存的结果。
如果您习惯于编写 SQL 查询,并且想从 BigQuery 中提取数据作为更大的 R 工作流的一部分,则还可以在 R 中运行 SQL 命令。
例如,假设您要运行此 SQL 命令:
您可以使用 DBI 包的 dbGetQuery() 函数在 R 中执行此操作。这是代码:
请注意,我再次为该查询付费,因为 BigQuery 不认为 R 中的一个查询和 SQL 中的另一个查询完全相同,即使它们正在寻找相同的数据。
如果我再次运行该 SQL 查询,我就不会被收费。
在一次性初始设置之后,在 R 中分析 BigQuery 数据就像在本地数据帧上运行 dplyr 代码一样容易。请记住您的查询成本。如果您在 10 GB 的数据集上运行十几个查询,您将不会接近达到 1 TB 的每月免费配额。但是,如果您每天都在处理更大的数据集,那么有必要研究一下简化代码的方法。

作者 east
运维 3月 28,2023

减少云费用的 12 个编程技巧

没有什么比观看应用程序病毒式传播更能让开发团队精神振奋的了。这是一种美妙的感觉——至少,在每月的云账单到来之前是这样。一些开发人员认为,管理计算成本是 devops 团队的责任。编码人员编写软件,将其扔到墙上,然后让其他人担心为此付费。没有东西会离事实很远。
聪明的开发人员知道他们的编码决策对公司的底线有很大的影响。庞大的代码速度较慢,需要更多的云资源才能运行。选择更好的算法和编写更紧凑的代码不仅仅关乎速度。编写良好的代码运行成本更低。
开发人员并不总能看到这种联系。在您自己的机器上编写代码很容易,RAM 和额外的磁盘空间是在购买机器时支付的。如果您有 2 TB 的磁盘空间,您可能不会注意到您的代码占用了多少空间。如果一个新的算法需要两倍的时间来运行,你的桌面可能甚至不会闪烁——而且,谁会注意到多了几毫秒?但几乎可以肯定的是,将计算量增加一倍将导致更大的云计算费用。
现代云计算擅长将资源利用率转化为订单项费用。优秀的云开发人员明白,他们有能力在编写代码时做出更明智的决策。它可以像运行分析器来识别慢点一样简单,或者避免不必要的数据存储以减少内存占用。
这里有 12 种方法可以简化您的代码,使其运行起来更精简、更快、成本更低。
大多数开发人员不会花太多时间优化他们的代码。如果它在他们的笔记本电脑上瞬间运行,他们不会注意到随着时间的推移它的运行速度是否慢了 20%、30% 甚至 300%。该程序仍在瞬间响应。但是当它们在服务器上出现数百万次时,这些差异就会加起来。仔细的分析可以标记缓慢的部分。重写它们可以减少应用程序需要的实例数。
使用的 RAM 量是为云实例定价的一个重要参数。在许多情况下,将 RAM 增加一倍也会使成本增加一倍。程序员可以通过避免将数据保存在内存中来减少他们的 RAM 占用空间。一些流算法,如 Java 的 Stream 类,设计用于处理大型数据文件,而无需将它们全部加载到内存中。 Apache DataSketches 项目在不占用所有内存的情况下,为复杂的大数据统计生成近似答案。
作为一个附带的好处,谨慎的 RAM 消耗也可以加速你的算法。有时,操作系统会开始使用虚拟内存将数据卸载到磁盘上。这可以防止崩溃,但会显着降低程序速度。
使用较低分辨率的图像和视频可以通过多种方式获得回报。首先,存储它们会更便宜。其次,任何数据泄露费用都会降低。第三,该应用程序对用户来说似乎更快捷。
所有的静态图像应该从一开始就最小化。唉,最小化的数量并不简单,因为在某些时候视觉质量下降到足以让用户察觉。找到正确的权衡是一些程序员不准备做出的设计决定。
某些使用上传图像的应用程序还可以在接收到图像后创建更小的缩略图和分辨率降低的版本。为此开发了像 ImageMagik 这样的工具包和像 WebP 这样的格式。
许多开发人员都是数字包装老鼠,他们存储信息以备不时之需。他们用无穷无尽的列填写表格,然后从不删除行。如果您拥有硬件并且磁盘驱动器有足够的空间,那么额外的数据不会花费任何费用。但是云对一切都收费。您将来真的需要所有这些价值吗?用户还想要那么多细节吗?转储一些旧数据将为您节省数据存储和泄露方面的资金。
在云实例上使用本地磁盘不仅危险,而且成本高昂。本地磁盘空间通常设计得足够快以保持操作系统高效运行。许多开发人员在具有 1 TB 或更多 TB 存储空间的个人计算机上创建他们的代码。云机器存储很少如此便宜或容易获得。云通常根据大小直接为存储计费,因此最好的方法是尽可能少地使用存储。不仅要考虑最小化应用程序创建的临时文件的方法,还要考虑最小化所需的系统库和软件包的方法。
日志文件非常适合在开发过程中识别问题和调试软件。但是一旦代码投入生产,您就不需要保留所有这些代码。所有额外的信息都会阻塞本地磁盘或对象存储。在设计日志系统时,将其配置为经常删除日志。许多日志包如 Log4j 可以设置为保留最少数量的日志并滚动删除它们。
无服务器架构计划仅在您的代码运行时计费,这可以在负载间歇性时为您节省大量资金。即使是拥有源源不断的用户流的应用程序,其停滞时间也比您预期的要长。
许多无服务器定价计划奖励仔细的编码和非常快的性能以及最小的 RAM 消耗。计费公式以毫秒为单位计算响应时间,并且只对处理器被占用的时间收费。作为开发人员,您会立即获得反馈,因为您可以直接跟踪响应时间并查看您的代码更改如何影响它。
无服务器方法非常适合较小或更多实验项目,而且费用通常低至每月几美分。如果您的应用程序只是偶尔运行某些功能,那么使用无服务器可能是有意义的。
随着数据变老,访问频率降低。您可以通过将应用程序设置为将旧数据迁移到更便宜的位置来预见这一点。一些云对所谓的“冷存储”收费要低得多,这可能需要几分钟甚至几小时才能交付数据。其他云,如 Wasabi 或 Backblaze,专门为 Amazon S3 对象提供归档存储,收费远低于主要云。在某些情况下,他们甚至不对数据泄露收费。一旦不再需要大量数据就卸载数据可能非常具有成本效益。
如果你看过一些框架生成的 HTML 标签,你就会知道布局会变得多么可笑。它只是一直向下嵌套到 DIV 标签中的 DIV 标签——这需要花钱来生成和交付。我认识的一位网页设计师吹嘘说,通过更明智地使用 CSS 创建更简单的布局,他们的带宽费用就减少了 30%。
像 React 这样的一些框架需要相当多的计算能力,尤其是当它们使用服务器端渲染等功能时。所有这些代码推高了每月的云账单。相反的理念是创建一个静态站点,该站点由缓存逐字提供的不变的 HTML、CSS 和 JavaScript 块构建。通过将缓存移至更靠近用户的位置,使用内容分发网络可以进一步加快分发速度。
各种框架都接受这种静态哲学。 Jekyll、Hugo、Gridsome 和 Pelican 只是将您的所有内容打包到一组紧凑、不变的文件中的几个工具。您仍然可以使用 AJAX 调用在页面中构建个性化设置,但网站的大部分内容在服务器上产生的负载很小。
随着浏览器变得越来越强大,一些框架使得将更多计算直接转移到客户端变得更加简单。好的 JavaScript 或 WebAssembly 代码可以将更多的负载推到用户的机器上,并从您的云服务器上卸下。一些开发人员正在将他们的云层减少到只不过是一个带有一些用于身份验证的业务逻辑的数据库。一位朋友使用静态 HTML 和服务器端版本的 PostgreSQL 运行一切,其中嵌入了输出 JSON 的过程。
浏览器还有更精细的选项用于在本地存储信息,例如 HTML Web 存储标准和 W3C 索引数据库 API。不再只是短字符串和 cookie。由于这些数据不通过互联网传输,因此可以更快地获得这些数据,并且让用户放心,因为他们知道自己的数据没有存储在一个集中的、可破解的数据库中。当数据可以免费存在于用户的机器上时,为什么还要为数据存储和泄露付费?
一些开发人员专门处理数据库。有些人喜欢用精心设计的前端创造美好的第一印象。现在云成本如此灵活,一些团队正式任命“成本工程师”来管理代码成本和效率。成本工程师的首要关注点是让应用程序代码运行得更干净、更快、更轻便,从而更便宜。将此任务作为某人工作的一部分传达了一个信息,即管理代码成本作为开发团队角色和责任的一部分的重要性。

作者 east

上一 1 … 19 20 21 … 41 下一个

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。回复”chatgpt”获取免注册可用chatgpt。回复“大数据”获取多本大数据电子书

标签

AIGC AI创作 bert chatgpt github GPT-3 gpt3 GTP-3 hive mysql O2O tensorflow UI控件 不含后台 交流 共享经济 出行 图像 地图定位 外卖 多媒体 娱乐 小程序 布局 带后台完整项目 开源项目 搜索 支付 效率 教育 日历 机器学习 深度学习 物流 用户系统 电商 画图 画布(canvas) 社交 签到 联网 读书 资讯 阅读 预订

官方QQ群

小程序开发群:74052405

大数据开发群: 952493060

近期文章

  • AUTOSAR如何在多个供应商交付的配置中避免ARXML不兼容?
  • C++thread pool(线程池)设计应关注哪些扩展性问题?
  • 各类MCAL(Microcontroller Abstraction Layer)如何与AUTOSAR工具链解耦?
  • 如何设计AUTOSAR中的“域控制器”以支持未来扩展?
  • C++ 中避免悬挂引用的企业策略有哪些?
  • 嵌入式电机:如何在低速和高负载状态下保持FOC(Field-Oriented Control)算法的电流控制稳定?
  • C++如何在插件式架构中使用反射实现模块隔离?
  • C++如何追踪内存泄漏(valgrind/ASan等)并定位到业务代码?
  • C++大型系统中如何组织头文件和依赖树?
  • 如何进行AUTOSAR模块的持续集成(CI)部署与版本控制?

文章归档

  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年1月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年7月
  • 2018年6月

分类目录

  • Android (73)
  • bug清单 (79)
  • C++ (34)
  • Fuchsia (15)
  • php (4)
  • python (42)
  • sklearn (1)
  • 云计算 (20)
  • 人工智能 (61)
    • chatgpt (21)
      • 提示词 (6)
    • Keras (1)
    • Tensorflow (3)
    • 大模型 (1)
    • 智能体 (4)
    • 深度学习 (14)
  • 储能 (44)
  • 前端 (4)
  • 大数据开发 (484)
    • CDH (6)
    • datax (4)
    • doris (28)
    • Elasticsearch (15)
    • Flink (78)
    • flume (7)
    • Hadoop (19)
    • Hbase (23)
    • Hive (40)
    • Impala (2)
    • Java (71)
    • Kafka (10)
    • neo4j (5)
    • shardingsphere (6)
    • solr (5)
    • Spark (99)
    • spring (11)
    • 数据仓库 (9)
    • 数据挖掘 (7)
    • 海豚调度器 (9)
    • 运维 (33)
      • Docker (2)
  • 小游戏代码 (1)
  • 小程序代码 (139)
    • O2O (16)
    • UI控件 (5)
    • 互联网类 (23)
    • 企业类 (6)
    • 地图定位 (9)
    • 多媒体 (6)
    • 工具类 (25)
    • 电商类 (22)
    • 社交 (7)
    • 行业软件 (7)
    • 资讯读书 (11)
  • 嵌入式 (70)
    • autosar (63)
    • RTOS (1)
    • 总线 (1)
  • 开发博客 (16)
    • Harmony (9)
  • 技术架构 (6)
  • 数据库 (32)
    • mongodb (1)
    • mysql (13)
    • pgsql (2)
    • redis (1)
    • tdengine (4)
  • 未分类 (6)
  • 程序员网赚 (20)
    • 广告联盟 (3)
    • 私域流量 (5)
    • 自媒体 (5)
  • 量化投资 (4)
  • 面试 (14)

功能

  • 登录
  • 文章RSS
  • 评论RSS
  • WordPress.org

All Rights Reserved by Gitweixin.本站收集网友上传代码, 如有侵犯版权,请发邮件联系yiyuyos@gmail.com删除.