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

Yarn不接受任务的问题

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

  • 首页   /  
  • 作者: east
  • ( 页面64 )
bug清单 2月 27,2021

Yarn不接受任务的问题

Yarn不接受任务的问题

现象描述

提交Spark任务时,报如下错误。

Exception in thread "main" org.apache.spark.SparkException: Yarn application already ended,might be killed or not able to launch application master.
at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.waitForApp(YarnClientSchedulerBackend.scala:111)
at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:87)
at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:141)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:323)
at org.apache.spark.examples.SparkPi$.main(SparkPi.scala:28)
at org.apache.spark.examples.SparkPi.main(SparkPi.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:332)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:79)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

可能原因

Yarn出现问题,不能支持Spark on Yarn。

定位思路

无。

处理步骤

建议观察Application Master的Web UI报错信息,并联系Yarn相关人员定位。

作者 east
bug清单 2月 27,2021

Spark出现Address already in use: Service ‘SparkUI’ failed after 16 retries!异常

出现Address already in use: Service ‘SparkUI’ failed after 16 retries!异常

现象描述

提交任务时,出现以下错误。此现象多发生在同时有多个任务提交的情况下。

2014-09-17 15:27:04,597 INFO [main] Successfully started service 'HTTP file server' on port 23503. org.apache.spark.Logging$class.logInfo(Logging.scala:59)
2014-09-17 15:27:04,875 WARN [main] Service 'SparkUI' could not bind on port 23000. Attempting port 23001. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:04,942 WARN [main] Service 'SparkUI' could not bind on port 23001. Attempting port 23002. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,003 WARN [main] Service 'SparkUI' could not bind on port 23002. Attempting port 23003. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,086 WARN [main] Service 'SparkUI' could not bind on port 23003. Attempting port 23004. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,147 WARN [main] Service 'SparkUI' could not bind on port 23004. Attempting port 23005. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,213 WARN [main] Service 'SparkUI' could not bind on port 23005. Attempting port 23006. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,275 WARN [main] Service 'SparkUI' could not bind on port 23006. Attempting port 23007. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,336 WARN [main] Service 'SparkUI' could not bind on port 23007. Attempting port 23008. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,396 WARN [main] Service 'SparkUI' could not bind on port 23008. Attempting port 23009. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,461 WARN [main] Service 'SparkUI' could not bind on port 23009. Attempting port 23010. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,523 WARN [main] Service 'SparkUI' could not bind on port 23010. Attempting port 23011. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,586 WARN [main] Service 'SparkUI' could not bind on port 23011. Attempting port 23012. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,644 WARN [main] Service 'SparkUI' could not bind on port 23012. Attempting port 23013. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,704 WARN [main] Service 'SparkUI' could not bind on port 23013. Attempting port 23014. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,763 WARN [main] Service 'SparkUI' could not bind on port 23014. Attempting port 23015. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,825 WARN [main] Service 'SparkUI' could not bind on port 23015. Attempting port 23016. org.apache.spark.Logging$class.logWarning(Logging.scala:71)
2014-09-17 15:27:05,887 ERROR [main] Failed to bind SparkUI org.apache.spark.Logging$class.logError(Logging.scala:96)
java.net.BindException: Address already in use: Service 'SparkUI' failed after 16 retries!
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:444)
at sun.nio.ch.Net.bind(Net.java:436)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:187)
at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316)
at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:265)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.Server.doStart(Server.java:293)
¡­¡­

可能原因

每一个Spark任务都会起一个Driver端口,即SparkUI,默认为23000,如果被占用则随机选取端口重试,默认会重试16次。16次重试都失败后,会放弃任务的运行。

定位思路

使用jps命令查看当前节点上提交的任务数量,如果当前节点的任务数超过了16个,就会造成这样的错误。

处理步骤

使用以下步骤中的任何一个可以解决。

  • 初始化SparkConf时,添加conf.set(“spark.port.maxRetries”,“100”)语句
  • 使用spark-submit提交任务时,在命令行中添加 –conf spark.port.maxRetries=100
  • 在spark-defaults.conf中添加spark.port.maxRetries 100

可以将100替换为任何想要的数字,数字越大,允许同时运行的任务越多。

作者 east
bug清单 2月 27,2021

Spark任务挂起,报Initial job has not accepted any resources异常

任务挂起,报Initial job has not accepted any resources异常

现象描述

在客户端使用yarn-client模式提交任务时,任务不结束,循环报”Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient memory”字样的警告。

可能原因

使用yarn-client模式运行任务时,Spark应用程序的Driver运行在客户端节点上,运行任务的过程中会和集群内Yarn进行通信。该问题可能的原因有:

  • 检查Spark的客户端是否在Yarn所在节点的主机列表中。若不在,则会解析错误,从而造成job不能被初始化的假象。
  • 检查executor memory是否配置太大,导致NodeManager提供的内存不足以启动一个container。

定位思路

  1. 查看集群内每台节点中的“/etc/hosts”文件中是否加入了客户端节点的IP和主机名。如果“/etc/hosts”文件未加入,则修改文件,重试跑应用。
  2. 若“/etc/hosts”加入了客户端节点的IP和主机名后,该问题还存在时,查看Executor端对应的进程CoarseGrainedExecutorBackend是否存在。如果不存在,可能是由于executor memory配置太大导致的。

处理步骤

  1. 在集群内部署Yarn的每台节点的“/etc/hosts”中按照格式加入客户端节点的IP和主机名。
  2. 适当减少executor memory的大小。根据Yarn的可用资源的大小,适当配置executor memory。
作者 east
bug清单 2月 27,2021

出现Not attempting to re-login since the last re-login was attempted less than 600 seconds before异常

出现Not attempting to re-login since the last re-login was attempted less than 600 seconds before异常

现象描述

安全模式下客户端提交代码时,Driver端日志报错如下。

14/09/20 15:29:31 INFO SparkUI: Started SparkUI at http://linux-18:23000
14/09/20 15:29:31 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
14/09/20 15:29:35 WARN UserGroupInformation: Not attempting to re-login since the last re-login was attempted less than 600 seconds before.
14/09/20 15:29:38 WARN UserGroupInformation: Not attempting to re-login since the last re-login was attempted less than 600 seconds before.
14/09/20 15:29:43 WARN UserGroupInformation: Not attempting to re-login since the last re-login was attempted less than 600 seconds before.
14/09/20 15:29:46 WARN UserGroupInformation: Not attempting to re-login since the last re-login was attempted less than 600 seconds before.

或者报如下错误:

Caused by: GSSException: No valid credentials provided (Mechanism level: Clock skew too great (37))
        at sun.security.jgss.krb5.Krb5Context.initSecContext(Krb5Context.java:770)
        at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:248)
        at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179)
        at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:192)
        ... 80 more
Caused by: KrbException: Clock skew too great (37)
        at sun.security.krb5.KrbKdcRep.check(KrbKdcRep.java:88)
        at sun.security.krb5.KrbTgsRep.<init>(KrbTgsRep.java:87)
        at sun.security.krb5.KrbTgsReq.getReply(KrbTgsReq.java:259)
        at sun.security.krb5.KrbTgsReq.sendAndGetCreds(KrbTgsReq.java:270)
        at sun.security.krb5.internal.CredentialsUtil.serviceCreds(CredentialsUtil.java:302)
        at sun.security.krb5.internal.CredentialsUtil.acquireServiceCreds(CredentialsUtil.java:120)
        at sun.security.krb5.Credentials.acquireServiceCreds(Credentials.java:458)
        at sun.security.jgss.krb5.Krb5Context.initSecContext(Krb5Context.java:693)
        ... 83 more

可能原因

Kerberos认证时会对客户端节点和服务端节点上的时间进行认证,如果时间差超过一定阈值(默认为5分钟),则拒绝客户端的连接。

定位思路

使用date命令分别查看客户端以及服务端的日期及时间,如果两者相差5分钟以上,则为时间不同步引起的问题。

处理步骤

  1. 在客户端安装ntp服务进行时间同步。
  2. 手动修改客户端上的时间,使之与服务端一致。
作者 east
bug清单 2月 27,2021

使用Snappy压缩时出现java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z的问题

使用Snappy压缩时出现java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z的问题

现象描述

当应用程序中使用Snappy压缩时,报出UnsatisfiedLinkError,如下:

14/09/18 20:59:50 WARN TaskSetManager: Lost task 0.0 in stage 1.0 (TID 0, vm-183): java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z
org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy(Native Method)
org.apache.hadoop.io.compress.SnappyCodec.checkNativeCodeLoaded(SnappyCodec.java:63)
org.apache.hadoop.io.compress.SnappyCodec.getDecompressorType(SnappyCodec.java:190)
org.apache.hadoop.io.compress.CodecPool.getDecompressor(CodecPool.java:176)
org.apache.hadoop.io.SequenceFile$Reader.init(SequenceFile.java:1915)
org.apache.hadoop.io.SequenceFile$Reader.initialize(SequenceFile.java:1810)
org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1759)
com.spark.common.format.ProtobufFileInputFormat$ProtobufSequenceFileRecordReader.initialize(ProtobufFileInputFormat.java:76)
org.apache.spark.rdd.NewHadoopRDD$$anon$1.<init>(NewHadoopRDD.scala:117)
org.apache.spark.rdd.NewHadoopRDD.compute(NewHadoopRDD.scala:103)
org.apache.spark.rdd.NewHadoopRDD.compute(NewHadoopRDD.scala:65)
org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:262)
org.apache.spark.rdd.RDD.iterator(RDD.scala:229)
org.apache.spark.rdd.UnionRDD.compute(UnionRDD.scala:86)
……….

或者报如下错误:

Error: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 1.0 failed 4 times, 
most recent failure: Lost task 0.3 in stage 1.0 (TID 7, node3): java.lang.RuntimeException: native snappy library not available: this version of libhadoop was built without snappy support.
         at org.apache.hadoop.io.compress.SnappyCodec.checkNativeCodeLoaded(SnappyCodec.java:65)
         at org.apache.hadoop.io.compress.SnappyCodec.getDecompressorType(SnappyCodec.java:193)
         at org.apache.hadoop.io.compress.CodecPool.getDecompressor(CodecPool.java:178)
         at org.apache.hadoop.io.SequenceFile$Reader.init(SequenceFile.java:1918)
         at org.apache.hadoop.io.SequenceFile$Reader.initialize(SequenceFile.java:1813)
         at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1762)
         at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1776)
         at org.apache.hadoop.mapred.SequenceFileRecordReader.<init>(SequenceFileRecordReader.java:49)
         at org.apache.hadoop.mapred.SequenceFileInputFormat.getRecordReader(SequenceFileInputFormat.java:64)
         at org.apache.spark.rdd.HadoopRDD$$anon$1.<init>(HadoopRDD.scala:239)
         at org.apache.spark.rdd.HadoopRDD.compute(HadoopRDD.scala:216)
         at org.apache.spark.rdd.HadoopRDD.compute(HadoopRDD.scala:101)
         at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:277)
         at org.apache.spark.rdd.RDD.iterator(RDD.scala:244)
         at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:35)
.........                 

可能原因

Spark使用Snappy时,检查是否有native的方法可供调用,结果是没有。

定位思路

Spark依赖HDFS上的数据,计算时依赖YARN。应用程序中使用Snappy压缩,很可能是找不到Snappy的压缩代码。

处理步骤

  1. 进入Spark客户端的“$Spark_Client/conf/spark-defaults.conf”配置文件。
  2. 将spark.executor.extraJavaOptions和spark.driver.extraJavaOptions参数中加入如下参数值。 spark.executor.extraLibraryPath= -Djava.library.path=$HADOOP_HOME/lib/native spark.yarn.cluster.driver.extraLibraryPath= -Djava.library.path=$HADOOP_HOME/lib/native spark.driver.extraLibraryPath= -Djava.library.path=$HADOOP_HOME/lib/native 说明:
    • java.library.path的值对应的是实际环境中的路径。
    • spark.executor.extraJavaOptions和spark.driver.extraJavaOptions参数的等号后面需加空格。

参考信息

无。

作者 east
大数据开发 2月 21,2021

国外大公司Pig常见面试题

1)区分Hadoop MapReduce和Pig

Hadoop MapReduce是 编译语言 , 抽象级别低 , 代码需要更多行代码 ,
代码效率代码效率很高。

Pig是脚本语言,抽象级别高。pig与Hadoop MapReduce相比,代码行更少。
代码效率相对较低。

2)比较Apache Pig和SQL。

Apache Pig与SQL的区别在于ETL的用法,惰性评估,在管道中任何给定时间点存储数据,支持管道拆分和显式声明执行计划。 SQL围绕查询产生单个结果。 SQL没有用于拆分数据处理流并将不同的运算符应用于每个子流的内置机制。
Apache Pig允许将用户代码包括在管道的任何位置,而如果要在SQL中使用的数据首先需要导入到数据库中,然后开始清理和转换过程。

3)说明在Apache Pig中进行编程时对MapReduce的需求。

Apache Pig程序使用称为Pig Latin的查询语言编写,与SQL查询语言相似。为了执行查询,需要执行引擎。 Pig引擎将查询转换为MapReduce作业,因此MapReduce充当执行引擎,并且是运行程序所必需的。

4)说明BloomMapFile。

BloomMapFile是一个类,它扩展了MapFile类。它以HBase表格式使用,以使用动态Bloom筛选器为密钥提供快速的成员资格测试。

5) bag in Pig 是什么意思?

元组的集合在Apache Pig中称为包

6)Pig脚本中的foreach操作的用途是什么?

Apache Pig中的FOREACH操作用于将转换应用于数据包中的每个元素,以便执行相应的操作以生成新的数据项。

语法-FOREACH data_bagname GENERATE exp1,exp2

7)解释Pig中不同的复杂数据类型。

Apache Pig支持3种复杂的数据类型-

映射-这些是使用#连接在一起的键值存储。
元组-类似于表格中的行,其中不同的项目之间用逗号分隔。元组可以具有多个属性。
袋-无序的元组集合。包允许多个重复的元组。
8)Flatten在Pig中做什么?

有时,在元组或包中有数据,如果我们想从该数据中删除嵌套级别,则可以使用Pig中的Flatten修饰符。展平未套袋和元组。对于元组,Flatten运算符将用元组的字段代替元组,而取消嵌套的包有点复杂,因为它需要创建新的元组。

通过研究有趣的Pig实时示例来掌握Hadoop

9)用户如何与Apache Pig中的shell交互?

使用Grunt即Apache Pig的交互式外壳,用户可以与HDFS或本地文件系统进行交互。要启动Grunt,用户应该不使用任何命令来调用Apache Pig –

执行“ pig –x local”命令将出现提示-


grunt >

通过在PIG_CLASSPATH中设置配置,可以在本地模式或集群模式下运行PigLatin脚本。

要退出grunt shell,请按CTRL + D或直接键入exit。

10)Apache Pig脚本使用哪些调试工具?

描述和解释是Apache Pig中重要的调试实用程序。

当尝试调试错误或优化PigLatin脚本时,explain实用程序对Hadoop开发人员很有帮助。 describe可以应用于脚本中的特定别名,也可以应用于grunt交互式shell中的整个脚本。说明实用程序会生成几个文本格式的图形,可以将其打印到文件中。
describe调试实用程序在编写Pig脚本时对开发人员很有帮助,因为它显示了脚本中的关系模式。对于尝试学习Apache Pig的初学者,可以使用describe实用程序来了解每个操作员如何更改数据。


11)在Apache Pig中用于说明什么?

在大型数据集上执行猪脚本通常需要很长时间。为解决此问题,开发人员在示例数据上运行了Pig脚本,但是选择的示例数据有可能无法正确执行您的Pig脚本。例如,如果脚本具有联接运算符,则示例数据中至少应有一些记录具有相同的键,否则联接操作将不返回任何结果。为了解决这类问题,使用了说明。说明从数据中获取样本,并且每当遇到诸如删除数据的联接或过滤器之类的运算符时,它都会通过对记录进行修改以使它们满足

他条件。说明仅显示每个阶段的输出,但不运行任何MapReduce任务。

12)解释Pig脚本的执行计划

或者

区分Apache Pig脚本的逻辑和物理计划

在执行pig脚本期间创建逻辑和物理计划。 Pig脚本基于解释器检查。逻辑计划是在语义检查和基本解析之后生成的,在逻辑计划的创建过程中不会进行任何数据处理。对于Pig脚本中的每一行,都会对运算符执行语法检查,并创建一个逻辑计划。每当脚本中遇到错误时,都会引发异常并结束程序执行,否则脚本中的每个语句都有自己的逻辑计划。

逻辑计划在脚本中包含运算符的集合,但不包含运算符之间的边缘。

生成逻辑计划后,脚本执行将移至物理计划,其中有关于Apache Pig将用来执行Pig脚本的物理运算符的描述。物理计划或多或少类似于一系列MapReduce作业,但是该计划没有任何关于如何在MapReduce中执行的参考。在创建物理计划时,将协同逻辑运算符转换为3个物理运算符,即–本地重排,全局重排和打包。加载和存储功能通常在物理计划中得到解决。

13)您对Apache Pig的区分大小写了解多少?

很难说Apache Pig是区分大小写还是不区分大小写。例如,pig中用户定义的函数,关系和字段名称区分大小写,即函数COUNT与函数计数不相同,或者X = load’foo’与x = load’foo’不相同。另一方面,Apache Pig中的关键字不区分大小写,即LOAD与load相同。

14)您能想到哪些Apache Pig用例?

Apache Pig大数据工具特别用于迭代处理,原始数据研究和传统ETL数据管道。由于Pig可以在模式未知,不一致或不完整的情况下运行,因此它被研究人员广泛使用,他们希望在清理数据并将其加载到数据仓库之前利用这些数据。

例如,要建立行为预测模型,网站可以使用它来跟踪访客对各种类型的广告,图像,文章等的响应。

15)区分PigLatin和HiveQL

必须在HiveQL中指定架构,而在PigLatin中是可选的。
HiveQL是一种声明性语言,而PigLatin是程序性语言。
HiveQL遵循平坦的关系数据模型,而PigLatin具有嵌套的关系数据模型。
阅读有关Pig vs.Hive的更多信息

16)PigLatin是一种强类型语言吗?如果是,那么您是如何得出结论的?

在强类型语言中,用户必须预先声明所有变量的类型。在Apache Pig中,当您描述数据的模式时,它期望数据以您提到的相同格式出现。但是,当模式未知时,脚本将在运行时适应实际的数据类型。因此,可以说PigLatin在大多数情况下是强类型的,但在极少数情况下是轻度键入的,即它继续处理不符合其期望的数据。

17)您对Pig的内包和外包有什么了解?

包内部的关系称为内包,而外包只是Pig中的关系

18)区分GROUP和COGROUP运算符。

GROUP和COGROUP运算符是相同的,并且可以使用一个或多个关系。 GROUP运算符通常用于按单个关系对数据进行分组以提高可读性,而COGROUP可以用于按2个或更多关系对数据进行分组。 COGROUP更像是GROUP和JOIN的组合,即它基于列对表进行分组,然后将它们联接到分组的列上。一次最多可以组合127个关系。

19)解释一下Apache Pig中COUNT_STAR和COUNT函数之间的区别吗?

在计算袋中元素数时,COUNT函数不包括NULL值,而COUNT_STAR(0函数在计数时包括NULL值。

20)Apache Pig提供了哪些各种诊断运算符?

转储运算符-用于在屏幕上显示Pig Latin语句的输出,以便开发人员可以调试代码。
描述操作员-在Apache Pig面试问题10中解释
解释操作员-在apache Pig面试中解释问题-10号
说明操作员-在apache pig面试问题-11中解释
21)您将如何合并两个或多个关系的内容,并将单个关系分为两个或多个关系?

这可以使用UNION和SPLIT运算符来完成。

22)我有一个关系R。如何从关系R中获得前10个元组?

20)Apache Pig提供了哪些各种诊断运算符?

转储运算符-用于在屏幕上显示Pig Latin语句的输出,以便开发人员可以调试代码。
描述操作员-在Apache Pig面试问题10中解释
解释操作员-在apache Pig面试中解释问题-10号
说明操作员-在apache pig面试问题-11中解释
21)您将如何合并两个或多个关系的内容,并将单个关系分为两个或多个关系?

这可以使用UNION和SPLIT运算符来完成。

22)我有一个关系R。如何从关系R中获得前10个元组?

TOP()函数从一包元组或一个关系中返回前N个元组。 N与要比较其值的列以及关系R一起作为参数传递给函数top()。

23)Pig和Hive之间有什么共同点?

HiveQL和PigLatin都将命令转换为MapReduce作业。
它们不能用于OLAP事务,因为很难执行低延迟查询。
24)Apache Pig支持哪些Java UDF类型?

代数,评估和过滤器功能是Pig中支持的各种UDF类型。

25)您在HDFS目录中有一个名为employee.txt的文件,其中包含100条记录。您只想查看employee.txt文件中的前10条记录。您将如何做?

第一步是将文件Employee.txt加载到关系名称为Employee的文件中。

员工数据的前10条记录可以使用limit运算符获取-

结果=限制员工10。

26)解释Apache Pig中的标量数据类型。

integer,float,double,long,bytearray和char数组是Apache Pig中可用的标量数据类型。

27)用户如何与Apache Pig中的HDFS交互?

使用grunt外壳。

28)在Apache Pig中使用过滤器有什么用?

就像SQL中的where子句一样,Apache Pig具有用于根据给定条件或谓词提取记录的过滤器。如果谓词或条件变为true,则记录将通过管道传递。谓词包含各种运算符,例如==,<=,!=,> =。

例子 –

X =将“输入”加载为(名称,地址)

Y =通过符号匹配“ Mr. *”的X;

29)什么是pig的UDF?

如果内置运算符不提供某些功能,则程序员可以通过使用其他编程语言(例如Java,Python,Ruby等)编写用户定义的函数来实现这些功能。然后可以将这些用户定义的函数(UDF)嵌入到Pig Latin中脚本。

30)您可以在Apache Pig脚本中加入多个字段吗?

是的,可以在PIG脚本中联接多个字段,因为联接操作从一个输入获取记录,然后将它们与另一输入联接。这可以通过为每个输入指定键来实现,当键相等时,两行将连接在一起。

31)Pig是否支持多行命令?

是的

作者 east
python, 人工智能 2月 21,2021

精心挑选的100多种机器学习数据集

毫无疑问,每个人都知道,学习数据科学和机器学习的唯一最佳方法是通过执行各种项目来学习它们。老实说,您周围有很多现实世界的机器学习数据集,即使您不必完成全面的数据科学或机器学习课程,也可以选择练习基础数据科学和机器学习技能。但是是的,数据科学和机器学习项目绝对没有其他选择。大多数数据科学和机器学习初学者做错的事情是,他们只是专注于学习许多理论概念,而等待太长时间才能启动专注于该概念的实际实现的机器学习/数据科学项目。毫无疑问,从理论上讲清楚您的机器学习概念总会很好,但是如果没有获得相关的实际经验,您就无法期望成为企业数据科学家或机器学习工程师。在此博客的此处,我们将为您提供100多个有价值的数据集,以供机器学习(特别是对于初学者)使用,这无疑将有助于验证您的基本数据科学和机器学习技能。

机器学习中的数据集是什么?
机器学习中的数据集是实例的集合(实例是指一行数据),这些实例都共享一些共同的特征和属性。为了使机器学习模型执行不同的动作,需要两种数据集–

训练数据集-送入机器学习算法进行训练的数据。

测试数据集或验证数据集–用于评估和测试机器学习模型正在正确解释的数据。

为什么需要机器学习数据集?
机器学习算法从数据中学习。机器学习算法可识别趋势,关系并根据为训练模型而提供的大量数据进行预测。因此,数据是机器学习中的金鹅。从机器学习模型中收集的见解与数据集一样好。对于机器学习项目而言,拥有大量且更好的训练数据可带来更好而准确的模型性能。可靠的机器学习数据集非常重要,并且在精确的机器学习模型的开发中起着至关重要的作用。

可在此处免费访问已解决的机器学习Python和R代码示例(这些已为您的项目准备使用)

在哪里可以找到用于机器学习的数据集?
有大量的免费和付费资源可用于机器学习数据集。公共机器学习数据集可帮助您入门的最受欢迎资源包括–

UCI或UC Irvine机器学习数据集存储库
AWS数据集
Google数据集搜索
数据政府
微软研究开放数据
卡格勒
世界银行
但是,对于数据科学和机器学习的初学者来说,从这些网站上提供的众多选项中进行选择可能会变得势不可挡。如果您想学习机器学习,则需要一个坚实的基础,这意味着用于机器学习项目的有趣数据集,以及一些可以使用这些免费数据集的很棒的项目构想。想知道在哪里可以找到免费和公共的机器学习数据集?别无所求……无论是零售,医疗保健,银行与金融,犯罪,还是其他任何类型的机器学习数据集,我们都精选了一系列顶级机器学习数据集,以帮助您使模型成功。

面向数据科学和机器学习从业人员的100多种机器学习数据集
机器学习数据集

我们汇总了一个以领域为中心的顶级机器学习数据集列表,其中包含对数据和可以使用特定数据集进行的项目的简短描述。

零售机器学习数据集
医疗保健机器学习数据集
银行和金融机器学习数据集
社交媒体机器学习数据集
犯罪机器学习数据集

机器学习的最佳零售数据集
机器学习的零售数据集
零售交易机器学习数据集
1)在线零售数据集(英国在线商店)

如果您热衷于预处理大型零售数据集,则可能希望查找这家英国的在线公司的交易数据,该数据可以出售独特的全场合赠品。 分类和聚类具有超过500,000行和8个属性,是可以使用此数据集执行的最常见的关联机器学习任务。

 Download Online Retail Dataset for Machine Learning

 Interesting Machine Learning Project Idea using UK Online Retail Dataset– Perform Market Basket Analysis to identify the association rules between the products.

2)零售火箭推荐系统数据集

该数据集由真实世界电子商务网站的点击流数据组成,该网站具有有关客户行为的信息,例如添加到购物车信息,交易和点击以及有关417053个唯一商品的不同商品属性的信息。 数据集具有事件数据文件,其中包含有关用户在特定时间戳下对产品执行的事件(添加到购物车,交易或视图)的信息。 仅当用户进行交易时,事件数据文件中的“ transaction-id”列才具有值,否则为N / A。

Download Retail Rocket Recommender System Dataset for Machine Learning

Machine Learning Project Idea using Retail Rocket Machine Learning Dataset – Build a Recommender System to predict the transaction and event pattern of a visitor.

3)用于机器学习的Instacart订单数据集

这是另一个有趣的机器学习数据集,可处理200,000多个Instacart匿名客户的杂货订单,该数据集可用于处理大型零售数据。对于每个客户,数据集均包含购买产品的顺序中4到100个订单的数据以及一天中的星期几和小时数。 XGBoost,Word2Vec和Annoy是机器学习算法,彻底改变了Instacart客户如今购买杂货的方式。


Download Instacart Orders Kaggle Dataset

使用Instacart数据集的初学者的机器学习/数据科学项目创意

客户细分–建立基于关联的机器学习模型,以了解Instacart客户的多样化组合,并针对合适的客户群体以最大程度地提高盈利能力。
市场篮子分析–开发预测性市场篮子分析机器学习模型,以确定Instacart客户将再次购买哪些产品?
4)Olist的巴西电子商务数据集

该机器学习数据集由Olist商店的10万个客户订单数据组成,其中包括卖方信息,产品元数据,客户信息和客户评论的详细信息。



Download Brazilian E-commerce Public Kaggle Dataset by Olist

使用巴西电子商务数据集的数据科学/机器学习项目构想

电子商务产品评论分析–通过分析客户给出的产品评论中的文字对Olist商店出售的产品进行评分。
分析Olist客户的购买趋势,以根据客户当前购买的商品确定客户是否打算购买相关产品。
5)机器学习的超级市场数据集

该零售数据集具有超过1000行和17列,具有一家超市公司3个月的历史销售数据,并记录了该公司三个不同分支机构的数据。该零售数据集是任何类型的预测分析项目的理想选择。


Download Supermarket Kaggle Dataset for Machine Learning

机器学习的零售图像数据集

6)MVTec密集细分的超市图像数据集

由于培训数据数量有限,并且验证和测试集中的多样性很高,因此对于机器学习而言,这是一个具有挑战性的图像数据集。它具有在700个不同场景中采集的日常产品和杂货的21K高分辨率图像,并在与行业相关的设置中以高质量注释为所有对象实例提供了像素化标签。


Download MVTec D2S Retail Dataset for Machine Learning

使用MVTec D2S数据集的计算机视觉项目构想

该零售数据集可用于语义图像分割,以覆盖自动结帐,仓库或库存系统的实际应用。经典的深度学习CNN机器学习算法最适合在像素级别对图像中的产品进行分类,以简化结帐流程。

7)上下文中的通用对象(COCO)数据集

COCO数据集共有330,000张图像,超过200,000个标签,其中包含91个东西类别,80个对象类别,150万个对象实例以及25万具有关键点的人员-COCO数据集是最流行且最具挑战性的高质量计算机视觉数据集之一。该数据集代表了我们在日常生活中遇到的各种物体的图像,被认为是转移学习的理想检查点。它是训练计算机视觉模型的基础数据集。使用COCO计算机视觉数据集训练了任何计算机视觉模型后,您就可以使用任何自定义数据集进一步调整模型以学习其他任务。


Download COCO Dataset for Machine Learning

您可以使用COCO数据集进行哪种计算机视觉项目?

对象检测-使用COCO数据集执行最具挑战性的计算机视觉任务之一,即预测图像中不同对象的位置以及存在的对象的类型。

8)弗莱堡杂货数据集

弗赖堡食品杂货零售数据集包含5000张图像,其中包含25种不同的食品杂货,每个类别至少具有97张图像,这些图像已在不同杂货店的各个部门的实际环境中捕获。


Download Freiburg Groceries Dataset

使用弗莱堡食品杂货集的计算机视觉项目构想

您可以基于杂货产品的多类对象分类构建计算机视觉模型。可以进一步微调此模型,以建立无摩擦的商店体验,类似于流行的Amazon Go商店,而无需手动结帐。

9)时尚MNIST数据集

凭借10K测试示例,60K,培训示例以及10类零售产品,分辨率为28×28灰度通道图像,这是用于深度学习和计算机视觉的MNIST数据集的最佳替代产品之一。但是,这比直接替换更具挑战性。


Download Fashion MNIST Kaggle Dataset

使用Fashion MNIST数据集的计算机视觉项目构想

通过使用Keras或TensorFlow训练简单的CNN从头开始构建模型,使用此数据集来享受您对服装分类的初体验。如果您想练习一种使用CNN机器学习算法解决图像分类问题的方法,则可以查找此数据集。

10)零售产品结帐数据集

在商店货架上有来自2000种不同产品类别的超过500,000张零售商品图像-就产品类别和产品图像数量而言,这是最大的零售图像数据集之一。


Download a Large-Scale Retail Product Checkout Kaggle Dataset

使用RPC数据集的计算机视觉项目构想

该数据集被广泛用于推进零售产品图像识别的研究,以进行自动货架审核和结帐。该数据集的高质量性质使其非常适合用于细粒度的零售产品图像分类。

是否想发展您的数据科学和机器学习技能?查看我们最新的端到端数据科学和机器学习项目以及源代码

客户评论用于机器学习的零售数据集
11)亚马逊客户评论数据集

从1995年到2015年,该机器学习数据集在数百万种产品上拥有超过130亿条客户评论,是机器学习,自然语言处理和信息检索领域的数据科学家和研究人员的福音,以了解客户体验。


Download Amazon Customer Reviews Dataset

12)妇女的电子商务服装评论数据集

这是一个匿名的数据集,因为它包含真实客户撰写的评论,并具有23486个带有10个不同功能变量的客户评论。该ML数据集提供了一个绝佳的环境,可用于解析多个维度的文本。


Download Women’s E-Commerce Clothing Reviews Dataset

13)宜家机器学习评论数据集

这是一个相当小的机器学习数据集,其中包含从Google Maps刮取的1300条最佳和最差的IKEA客户评论。这为情感分析提供了一个完美的初学者级数据集。


Download IKEA Reviews Kaggle Dataset

14)亚马逊和百思买电子产品评论数据集

该数据集专门针对百思买和亚马逊上提供的50种电子产品提供了7000多个在线评论。数据集包括审阅日期,标题,等级,来源,元数据和其他信息。


Download Amazon and Best Buy Electronic Product Reviews Dataset

15)多域情感数据集

这是一个多域数据集,包含来自许多产品类型的产品评论。超过10万条Amazon.com对产品,乐器,书籍和DVD的评论,评分介于1到5之间。


Download Multi-Domain Sentiment Kaggle Dataset

使用客户评论数据集的有趣的机器学习项目创意

使用NLP根据客户评论的内容预测收视率
研究客户反馈对产品购买过程的影响。您可以使用这些评论数据集来预测客户向其朋友推荐产品的可能性。
研究各种品牌的在线声誉。
对客户评论进行情绪分析,以识别用户对产品的情感(正面,负面或中立)。 (评论情绪)
ProjectPro通过构建端到端的现实世界数据科学和机器学习项目来帮助学生学习实践技能。为有源代码的学生检查一些有趣的有趣的机器学习项目构想。

其他用于机器学习的零售数据集
16)来自维多利亚的秘密和其他组织的内衣数据

该数据集包含来自受欢迎的零售网站(如亚马逊,维多利亚的秘密,汉基·潘基,梅西百货,Btemptd,Nordstrom,American Eagle等)的600,000多种内衣产品的数据。


Download Innerwear Data from Victoria’s Secret and Others Kaggle Dataset

使用Innerwear Kaggle数据集的机器学习项目构想:

该数据集可用于分析泳装和内装产品的流行趋势。

17)电子商务项目数据

机器学习数据集包含500个SKU,以及服装品牌产品目录中的产品说明。


Download eCommerce Item Kaggle Dataset

使用电子商务项目Kaggle数据集的机器学习项目构想:

您可以使用Item数据进行的有趣的机器学习项目是构建产品推荐系统。

18)eBay在线拍卖数据集

该在线拍卖零售数据集包含拍卖信息,例如竞标价格,竞标时间,物品的拍卖价格,以及有关施华洛世奇珠子,卡地亚手表,Xbox游戏机和Palm Pilot M515 PDA的其他拍卖信息。


Download eBay Online Auctions Dataset

使用在线拍卖Kaggle数据集的机器学习项目构想:

建立机器学习模型以预测拍卖品的最终价格。从利润最大化的角度来看,预测拍卖品的最终价格对买卖双方都有利。

19)沃尔玛数据集

这是最佳的初学者级机器学习数据集之一,因为它具有最多的零售数据以及每个沃尔玛商店区域中的外部数据,例如失业率,燃料价格,CPI,是进行详细分析的理想选择。该Kaggle数据集包含2010年至2012年记录的45家沃尔玛商店的匿名历史销售数据。


Download Walmart Store Sales Kaggle Dataset

使用沃尔玛零售数据集的机器学习/数据科学项目构想

考虑假日和降价事件,消费者物价指数,季节变化以及其他影响产品销售的因素,建立一个机器学习模型来预测沃尔玛在全部门的销售。销售预测模型可帮助公司草拟有关如何满足未来需求和增加销售的计划。

20)男鞋价格数据集

该数据集包含10,000种男鞋的大集合,以及它们的销售价格,品牌名称,鞋名和其他信息。


Download Men’s Shoe Price Dataset

使用鞋价数据集的机器学习/数据科学项目构想

使用此定价数据建立机器学习模型以-

确定奢侈品牌的品牌价值
确定定价策略
确定奢侈男鞋的趋势
确定鞋子的特定功能与价格变化之间的相关性。

机器学习的最佳医疗保健数据集


用于机器学习的医疗保健数据集

1)OSIC肺纤维化进展

开源影像协会医疗保健数据集包括200例匿名的肺部基线CT扫描以及其他相关临床信息,例如基线强迫生命系数,患者性别,年龄,基线扫描后的相对周数,吸烟状况等。


Download OSIC Pulmonary Fibrosis Progression Dataset

使用OSIC Kaggle数据集的数据科学/机器学习项目构想

您可以建立机器学习模型来预测患者肺功能下降的严重程度。

2)APTOS 2019失明检测

这是在各种成像条件下捕获的眼底摄影视网膜图像的多样化且广泛的数据集。根据糖尿病性视网膜病变的严重程度,每张图片的临床评分为0到4。


Download APTOS 2019 Blindness Detection Kaggle Dataset

使用APTOS数据集的机器学习项目构想

在285万人中,有1/3患有糖尿病性视网膜病变。您可以使用此数据集建立一个机器学习模型,该模型可以在DR引起影响眼睛的并发症之前早发现DR,这将帮助数百万糖尿病患者失去视力。

3)超声神经分割数据集

这个Kaggle数据集包含5635张图像,其中的神经已由人工手动注释。它是具有挑战性的机器学习数据集之一,因为它具有减小的数据大小并且没有明显的结构特征。


Download Ultrasound Nerve Segmentation Dataset

访问带有源代码的该机器学习项目,以建立一个机器学习模型,该模型可识别超声图像中的神经结构,以分割称为臂丛(BP)的神经集合。

4)帕金森数据集

这是一个非常小的医疗数据集,大约需要39 KB的数据,并且可以对31位患者进行一系列生物医学语音测量,其中23位患有帕金森氏病。


Download Parkinson Dataset from UCI Machine Learning Repository

使用帕金森数据集的机器学习项目构想

每年印度有超过100万人受到帕金森氏病的影响。这种疾病是慢性的,无法治愈,甚至很难为医生早期诊断。您可以建立一个机器学习模型,以准确检测个体中帕金森氏病的早期发作,并基于多种因素来确定帕金森氏病患者是否健康。

5)英特尔和MobileODT宫颈癌数据集

该Kaggle数据集包含1481个训练图像和512个测试图像。考虑到此数据集的局限性,您可能必须应用各种数据增强技术来增加训练样本的数量。


Download Intel & MobileODT Cervical Cancer Dataset

使用英特尔和移动ODT宫颈癌数据集的深度学习项目构想

使用深度学习和图像分类的子宫颈类型分类-宫颈癌是致命的,但是如果在早期发现并进行适当治疗,对许多妇女来说可以挽救生命。您可以使用此Kaggle数据集构建深度学习模型,以对子宫颈类型(类型1,类型2和类型3)进行分类,以帮助医疗保健专业人员为全球女性提供更好的护理。对子宫颈类型进行分类将有助于医疗保健提供者提高女性子宫颈癌筛查的效率和质量。

6)乳房组织病理学图像数据集

实际数据集包含162个乳腺癌标本的幻灯片图像。从该数据集中提取了277,524个补丁,其中78786个属于阳性类别,而其余198、738个补丁属于阴性类别。


Download Breast Histopathology Images Dataset

使用乳房组织病理学图像数据集的深度学习项目构想

乳腺癌是最常见的癌症类型,在2018年经诊断的210万例乳腺癌病例中有627,000例死亡报告。在所有确诊的乳腺癌病例中,有80%属于浸润性导管癌(IDC)类型。早期准确诊断癌症有助于选择正确的治疗方案,并有助于提高癌症患者的生存率。您可以使用此数据集构建用于图像分类的深层CNN,以识别未标记的组织病理学图像中IDC的存在。这是一项重要的临床任务,为此,自动化模型肯定会节省时间并减少错误。

7)迷你DDSM数据集

最大的(45GB)公共乳腺摄影数据集之一,具有年龄属性,密度属性,患者的原始文件名,癌病灶轮廓二进制蒙版图像以及带有所有所需元数据的excel表。


Download Mini DDSM Kaggle Dataset

使用Mini DDSM数据集的机器学习项目

年龄估计具有多种临床应用,并且已经使用生物医学图像对人类年龄进行了一些研究。使用此数据集,您可以基于乳房X线照片图像中的胸肌段建立基于AI的模型来估计年龄。最重要的步骤是从乳房X线照片中分割胸肌,然后提取深度学习特征以建立年龄估计模型。

8)克利夫兰心脏病数据集

克利夫兰心脏病UCI数据集包含303个个体的数据,这些个体具有75个属性,其中14个属性,例如年龄,性别,静息血压,血清胆固醇,静息心电图,获得的最大心率,运动诱发的心绞痛以及其他可能的重要参数发生心血管疾病的主要危险因素。


Download Heart Disease Dataset

使用心脏病数据集的机器学习项目构想

心脏病是世界范围内死亡率和发病率的主要原因,仅在美国,每年就有61万例死亡。根据风险因素很难手动确定罹患心血管疾病的几率。在这里,机器学习可以极大地帮助您根据医疗保健行业产生的大量数据做出预测。您可以应用各种机器学习算法,例如SVM,朴素贝叶斯,XGBoost,决策树,随机森林,并使用克利夫兰心脏病机器学习数据集对它们进行比较,以预测某人是否患有心脏病。

9)行动预测数据集的机制

这是一个独特的机器学习数据集,由细胞活力数据和基因表达组成,可以访问超过5K药物的MoA注释。这个用于机器学习的数据集基于一种新颖的技术,该技术可测量人类细胞对数百种不同细胞类型池中药物的反应,从而消除了确定哪种细胞类型更适合任何给定药物的问题。


Download Mechanisms of Action (MoA) Prediction Kaggle Dataset

使用MoA预测数据集的机器学习项目构想

药物发现在疾病治疗的发展中起着至关重要的作用。机器学习被广泛用于理解疾病的潜在机制,临床标记,药物发现和验证。通过开发机器学习算法来基于药物的生物活性对药物进行分类,该数据集可用于促进药物开发。

10)世界卫生组织-医疗机器学习数据集的世界

不同国家/地区最值得信赖和最真实的医疗数据来源。通过针对霍乱,肺结核,流行性感冒和其他疾病等特定疾病的COVID -19数据和分析,世卫组织获得了全球卫生重点数据以及大多数卫生状况的趋势重点。


Download Healthcare Datasets for Machine Learning from WHO Repository

与医疗数据配合使用的其他有趣且有趣的机器学习项目创意

肺分割
糖尿病预测
接触追踪以阻止传染病的传播
癌症分类
个性化医学
预测慢性病
预测疾病暴发
分类图像数据(X射线,CT扫描等)以进行诊断护理。

最佳银行和金融机器学习数据集


机器学习的银行和金融数据集

1)桑坦德数据集

由于这是银行业务数据集,因此已被完全掩盖,仅包含数值。西班牙在线银行桑坦德银行提供了四个不同的数据集,以帮助他们使用机器学习解决各种业务挑战。

ownload Santander Customer Transaction Dataset

Download Santander Value Prediction Dataset

Download Santander Product Recommendation Dataset

Download Santander Customer Satisfaction

这些桑坦德银行数据集可用于构建端到端机器学习模型,以-

预测客户将来是否会与银行进行交易,而不管交易的金额如何。
预测客户是否会购买产品
预测客户是否有能力支付费用
预测客户是否对银行的服务感到满意。
2)房屋信贷违约风险数据集

该数据集包含7个不同的客户数据源-贷款申请数据,局数据,信用卡余额数据,以前的贷款申请数据,POS现金余额数据,EMI付款数据和局余额数据。


Download Home Credit Default Risk Kaggle Dataset

使用房屋信用违约风险Kaggle数据集的机器学习项目构想

建立机器学习模型以预测客户是否有能力偿还贷款。这些模型将帮助银行决定是否只对有能力偿还贷款的申请人批准贷款。

3)银行营业额数据集

该数据集包含针对银行的大约1万名客户的14个功能,其中20%是流失客户。


Download Bank Turnover Dataset

使用银行营业额数据集的机器学习项目

该数据集可用于预测客户流失,这是机器学习的最常见应用之一。您可以建立一个机器学习模型来预测客户是否会在未来6个月内退出银行的服务。预测客户流失将有助于银行制定保留活动和忠诚度计划以保留客户。

4)信用卡交易数据集

该欧洲信用卡数据集包含2013年9月在两天内发生的284、807笔交易和492笔欺诈交易(占所有交易的0.172%)。这是一个极具挑战性的数据集,因为它的数据不平衡,因为大多数这些交易不是欺诈性交易,因此很难检测到欺诈性交易。


Download Credit Card Fraud Transaction Kaggle Dataset

使用信用卡交易数据集的机器学习项目

信用卡欺诈是许多银行和信用卡公司的常见问题,因为大多数欺诈交易看起来与正常交易相似,并且每天在信用卡上完成大量交易,因此很难手动检测到欺诈行为。使用此金融机器学习数据集来识别欺诈性信用卡交易,以确保不会因客户未进行的交易向客户收费。

5)给我一些信用数据集

该数据集包含2008年为25万巴西借款人创建的历史数据,金融机构可以利用这些历史数据来预测信用评分并做出最佳的财务决策。


Download Give me Some Credit Kaggle Dataset

使用“给我一些信誉”数据集的机器学习项目构想

建立一个机器学习模型,以预测一个人在未来两年内遭受财务困扰的可能性。

6)两个西格玛数据集

该数据集由两个数据源组成,即Intrinio和Thomson Reuters。 Intrinio提供的培训市场数据大约有400万行,而路透社提供的培训新闻分析数据则有近900万行,使其成为可用于预测股价的最大数据集之一。


Download Two Sigma Dataset

使用两个Sigma Kaggle数据集的有趣的机器学习项目创意

股票价格通常由投资者的行为决定,而投资者则根据公共信息确定股票价格以预测股票市场的反应。在此,随着投资者对这些信息做出反应,财经新闻文章在影响股票价格方面起着至关重要的作用。该数据集可用于构建机器学习模型,以对与公司列表相关的新闻文章进行分类,并基于该模型预测那些公司的股价波动。

7)比特币历史数据集

该数据集包括从2012年1月到2020年12月的精选比特币交易数据,包括开盘价,最高价,最低价和收盘价的逐分钟更新,以及加权比特币价格,BTC量和指定货币。


Download Bitcoin Historical Dataset

使用比特币历史数据集的示例机器学习项目构想

使用此Kaggle数据集构建机器学习模型,以预测明天的比特币价格。人们可以探索使用LSTM模型来预测比特币价格。

8)简街市场数据集

如果您喜欢机器学习项目或想探索一些良好的股市数据,则此数据集可能是一个绝佳的合作机会。它包含带有匿名功能的真实股市数据,其中数据集中的每一行代表一个交易机会。


Download Jane Street Market Prediction Dataset

使用Jane Street市场预测数据集的建议的机器学习项目

使用Jane Street股票市场数据来构建定量交易机器学习模型,以使用来自全球证券交易所的真实股票市场数据来最大化回报。您还可以针对未来的实际股市数据测试机器学习模型的有效性。

9)Elo商家类别推荐

Elo是巴西的大型支付品牌,向借记卡和信用卡用户提供餐厅推荐,并根据他们的偏好提供折扣。该数据集包含有关每笔卡交易的信息,以及有关特定商人长达3个月的每张卡交易价值的数据,每张卡的新商人的交易详细信息,以及基于交易中涉及的各种商人的其他商人数据。卡交易。


Download Elo Merchant Category Recommendation Dataset

建议的Elo商家类别数据集机器学习项目

该数据集可用于查找这些促销对客户和商人有多有益。建立机器学习模型来预测客户的忠诚度分数,并帮助Elo了解客户的忠诚度,以便他们减少不必要的营销活动并为其用户创造正确的体验。

10)俄罗斯储蓄银行俄罗斯住房市场数据集

此数据集的训练数据包含有关俄罗斯最古老,最大的银行Sberbank的21000个真实交易的信息,而测试数据包含7K个真实交易以及有关该物业的其他信息。


Download Sberbank Russian Housing Market Kaggle Dataset

使用Sberbank俄罗斯住房市场数据集的机器学习项目构想

使用此丰富的银行数据集来开发机器学习模型,以预测实际房价,以便开发商,贷方和提供者在购买物业或签订租约时充满信心。这些数据还包括有关俄罗斯经济和金融部门的信息,这些信息可以帮助开发准确的模型而无需再次猜测。

探索其他100个主要的金融和经济数据集。

机器学习社交媒体数据集
用于机器学习的社交媒体公共数据集

1)Twitter美国航空情绪数据集

该社交媒体数据集具有14,640行和12个属性,并包含从Twitter刮取的美国各主要航空公司的推文。


Download Twitter US Airline Sentiment Dataset

ML项目建议的想法:使用机器学习的情感分类系统

您可以使用此数据集将航空公司的推文分类为肯定,否定或中性,以分析旅行者对航空公司的反馈。

2)Google Cloud和YouTube 8M数据集

由Google AI / Research在2016年开发的数据集,其中包含800万个YouTube视频(总计50万小时)和4.8K(每个视频平均3.4个标签)视觉标题。


Download YouTube 8M Dataset

使用YouTube 8M数据集的数据科学和机器学习项目构想

建立模型大小小于1GB的紧凑型视频分类,以学习视频表示形式。这将有助于推进视频级注释。
建立分类机器学习模型以准确分配视频标签。
3)COVID-19 Tweets数据集

这是一个多语言的推文数据集,包含超过10亿条推文,其中包含冠状病毒,病毒,covid,ncov19,ncov2019等关键字,并带有标签,提及,主题和其他信息。


Download COVID19 Tweets Dataset

使用COVID 19数据集的建议ML项目

使用数据挖掘,网络分析和NLP分析来自该数据集的推文集,以识别人们对大流行的反应以及反应随时间的变化。您还可以利用此ML数据集来收集有关大流行初期如何传输正确信息和错误信息的见解。

4)Yelp数据集

该数据集包含5,200,000条评论,其中包含来自4个国家/地区11个地区的1,74,000家企业的信息。


Download Yelp Kaggle Dataset

您可以使用此数据集进行哪些项目以进行机器学习?

使用NLP和情感分析来找出评论中正面或负面的含义,并推断出各种情感和业务属性的含义。

5)Twitter上的客户支持

Twitter上来自顶级品牌的300万条推文的数据集。


Download Customer Support on Twitter Dataset

我可以使用此ML数据集做什么项目?




机器学习犯罪数据集

1)旧金山犯罪分类

这是一个历史数据集,包含2003年至2015年旧金山地区的12年犯罪报告。数据包括犯罪发生的日期,犯罪时间,犯罪描述,地区,地址,位置坐标和解决方案。

Download San Francisco Crime Classification Dataset

使用犯罪分类Kaggle数据集的ML项目构想

建立端到端机器学习模型,根据事件发生的位置和时间来预测犯罪事件的类别。

2)伦敦犯罪数据集

该数据集由LSOA区,月份和次要/主要类别在2008年1月至2016年12月之间的犯罪报告组成,犯罪记录为1300万行。


Download London Crime Dataset

使用London Crime Kaggle数据集的建议项目

该数据可用于分析根据一周中的某天或某个季节的犯罪发生率是否发生任何变化,或确定特定犯罪在减少或增加的自治市镇。

3)印度犯罪

该数据集包含有关2001年国家犯罪数据的完整信息,分为40多个因素。


Download Crime in India Dataset

使用此数据集的分析建议项目

该数据集可用于分析印度的犯罪模式,例如虐待儿童案件,针对SC和ST的犯罪以及其他犯罪,以根据犯罪模式发现潜在的罪犯。

4)芝加哥犯罪数据集

来自芝加哥警察局的芝加哥犯罪数据集有699万行,具有22个属性。该数据集会随着犯罪事件不断更新。


Download Chicago Crime Dataset

使用Chicago Crime Dataset的机器学习项目构想

可以利用该数据集来构建模型,以分析温度对暴力犯罪(如殴打或殴打)的影响,确定同比增长最高的犯罪类别等。

5)波士顿数据集中的犯罪

数据集由波士顿警察局提供,其中包含2015年6月以来的犯罪类型,犯罪发生的时间和地点,犯罪描述,位置坐标以及其他信息。


Download Crime in Boston Dataset

该数据集可用于构建一个模型,以识别犯罪热点和犯罪的频繁发生时间。


作者 east
flume 2月 21,2021

Flume案例研究:接收Twitter数据


问题陈述
在此案例研究中,将flume代理配置为从Twitter检索数据。我们知道,Twitter是巨大的数据来源,具有人们的意见和偏好。数据可用于分析舆论或对特定主题或产品进行评论。基于推文数据和位置可以进行各种类型的分析。来自flume的数据可用于通过Streaming API使用Apache Spark进行实时处理。 Spark Streaming用于使用各种数据源(例如Kafka,Flume或TCP套接字)处理实时数据。它还支持Twitter流API。通过使用Flume,我们可以构建一个容错系统,该系统提供实时数据并将数据的副本保存在所需的位置。 Spark还内置了机器学习算法,可以使分析更快,更可靠且具有容错能力。

这样,我们可以使用Spark实时获取所需的结果,并将数据存储在数据库中,以便使用Hadoop进行更深入的分析。现在,我们构建一个简单的flume代理,该代理具有Twitter源和接收器,Spark可通过接收器进行数据检索。为了防止数据丢失,我们将使用自定义接收器构建flume代理。即使spark产生故障,由于数据传输中的事务处理功能,数据仍保留在通道中。

拟议的解决方案
现在,必须为我们架构中的各种重要组件设置配置。这样的组件之一就是被配置为从Twitter读取数据的源。源为“ source_read”的flume代理“ agent1”已配置为自定义类型源。为了访问数据,通过注册应用程序,twitter提供了凭证,用户可以使用凭证来检索数据。如果我们需要包含这些单词的特定推文,我们也可以设置关键字。在对特定主题或产品进行分析时,这非常有用。

Cloudera提供了必须包含在Flume类路径中的jar文件才能访问这些类。可以通过在“ flume-env.sh”配置文件中添加jar的路径来完成。如果需要设置其他参数(例如代理),则必须使用源代码重新构建jar。

agent1.sources.source_read.type =
    com.cloudera.flume.source.TwitterSource
agent1.sources.source_read.channels = MemChannel
agent1.sources.source_read.consumerKey = 
agent1.sources.source_read.consumerSecret = 
agent1.sources.source_read.accessToken = 
agent1.sources.source_read.accessTokenSecret = 
agent1.sources.source_read.keywords = hadoop

channel的配置如下:

agent1.channels.memory1.type = memory
agent1.channels.memory1.capacity = 1000
agent1.channels.memory1.transactionCapacity = 100

使用参数“ type”传递自定义sink的代码。 代码的jar文件必须添加到flume类路径中。 定义了spark的IP地址和端口。

agent1.sinks = spark_dump
agent1.sinks.spark_dump.type = org.apache.spark.streaming.flume.sink.SparkSink agent1.sinks.spark_dump.hostname =
agent1.sinks.spark_dump.port =
agent1.sinks.spark_dump.channel = memory1

启动flume:

$ bin/flume-ng agent -n $agent_name -c conf -f
    conf/flume-conf.properties.template
作者 east
Spark 2月 21,2021

Spark编程语言选择:scala对比python

为Apache Spark选择编程语言是一个主观问题,因为特定的数据科学家或数据分析师喜欢将Python或Scala用于Apache Spark的原因可能并不总是适用于其他人。根据独特的用例或要开发的特定类型的大数据应用程序-数据专家确定哪种语言更适合Apache Spark编程。对于数据科学家来说,学习Scala,Python,R和Java以便在Spark中进行编程并根据任务的功能解决方案的效率选择首选语言非常有用。让我们探索一些重要因素,然后再决定将Scala vs Python作为Apache Spark的主要编程语言。

Python vs Scala

Hadoop更快的表亲Apache Spark框架具有用于以各种语言(Java,Scala和Python)进行数据处理和分析的API。出于讨论的目的,我们将Java从大数据分析和处理的比较列表中删除,因为Java太冗长了。 Java不支持读取 – 评估 – 打印循环(REPL)选择编程语言,大数据处理时,这是一个重大的大忌。

Scala和Python都易于编程,可帮助数据专家快速提高生产率。数据科学家通常更喜欢同时学习Spark的Scala和Spark的Python,但是Python通常是Apache Spark第二受欢迎的语言,因为Scala最早出现在该语言中。但是,以下一些重要因素可以帮助数据科学家或数据工程师根据他们的要求选择最佳的编程语言:

Scala与Python进行Spark编程

1)Scala vs Python-性能
由于使用JVM,Scala编程语言的数据分析和处理速度比Python快10倍。当使用Python编程代码来调用Spark库时,性能是中等的,但是如果涉及的处理量比Python代码要慢得多,则它会比Scala等效代码慢得多。 Python解释器PyPy具有一个内置的JIT(即时)编译器,该编译器速度非常快,但不提供对各种Python C扩展的支持。在这种情况下,带有C扩展库的CPython解释器要优于PyPy解释器。

在Apache Spark上使用Python作为Scala的性能开销,但是重要性取决于您在做什么。当内核数量较少时,Scala比Python更快。随着内核数量的增加,Scala的性能优势开始减弱。

当使用大量内核时,性能不是选择Apache Spark编程语言的主要驱动因素。但是,当存在重要的处理逻辑时,性能是主要因素,而Scala肯定会比Python提供更好的性能,从而可以针对Spark进行编程。

2)Scala vs Python-学习曲线
使用Apache Spark进行编程时,Scala语言具有多种语法功能,因此在学习Scala for Spark时,大数据专业人员必须非常谨慎。程序员有时可能会疯狂地发现Scala用于在Spark中进行编程的语法。 Scala中的库很少,因此很难定义经验不足的程序员可以理解的随机符号运算符。使用Scala时,开发人员需要专注于代码的可读性。与Java或Python相比,Scala是一种语法灵活的复杂语言。对Scala开发人员的需求不断增长,因为大数据公司重视可以掌握Apache Spark中数据分析和处理的高效健壮编程语言的开发人员。

由于Java的语法和标准库,Python比较容易学习。但是,对于高并发和可扩展的系统(例如SoundCloud或Twitter),Python并不是理想的选择。

Learning Scala丰富了程序员对类型系统中各种新颖抽象,新颖的函数式编程功能和不可变数据的知识。

3)Scala vs Python –并发
大数据系统的复杂基础结构需要一种编程语言,该语言具有跨多个数据库和服务进行集成的能力。 Scala凭借Play框架赢得了这场比赛,该框架提供了许多异步库和反应式内核,可以轻松地与各种并发原语(例如Akka在大数据生态系统中的参与者)集成。 Scala允许开发人员编写高效,可读性和可维护性的服务,而无需将程序代码悬挂到不可读的回调蜘蛛网中。相反,Python确实使用uwsgi支持重量级的进程派生,但它不支持真正的多线程。

在将Python用于Spark时,无论进程具有多少线程,Python进程一次只能激活一个CPU。这有助于每个CPU内核处理一个进程,但是这样做的缺点是,每当要部署新代码时,都需要重新启动更多进程,这还需要额外的内存开销。在这些方面,Scala更加高效且易于使用。

4)Scala与Python – TypeSafety
使用Apache Spark进行编程时,开发人员需要根据不断变化的需求不断重构代码。 Scala是一种静态类型的语言,尽管由于经典的类型推断机制,它看起来像一种动态类型的语言。作为静态类型的语言,Scala仍然为编译器提供了捕获编译时错误的功能。

重构静态语言(例如Scala)的程序代码比重构动态语言(例如Python)要容易得多,而且没有麻烦。在修改Python程序代码后,开发人员通常会遇到困难,因为它比修复较旧的bug会产生更多的bug。 Python中的Typecheck实际上征服了Python的鸭子式哲学。使用Scala for Spark时要缓慢而安全,要比使用Python for Spark时要快而死。

对于较小的临时实验,Python是对抗Spark的有效选择,但对于生产中的大型软件工程,它无法像静态类型的语言Scala那样有效地扩展。

5)Scala vs Python –易于使用
Scala和Python语言在Spark上下文中具有同等的表现力,因此通过使用Scala或Python,可以实现所需的功能。无论哪种方式,程序员都会创建Spark内容并在其上调用函数。 Python是比Scala更用户友好的语言。 Python不太冗长,因此开发人员可以轻松地在Python中为Spark编写脚本。易于使用是一个主观因素,因为它取决于程序员的个人喜好。

6)Scala vs Python –高级功能
Scala编程语言具有多种存在性类型,宏和隐式。 Scala的神秘语法可能使尝试使用开发人员可能无法理解的高级功能变得困难。但是,Scala的优势在于在重要的框架和库中使用这些强大的功能。

话虽如此,Scala没有足够的数据科学工具和库(例如Python)用于机器学习和自然语言处理。 SparkMLib –机器学习库仅具有较少的ML算法,但它们是大数据处理的理想选择。 Scala缺乏良好的可视化和本地数据转换。 Scala绝对是Spark Streaming功能的最佳选择,因为Python Spark Streaming支持并不像Scala那样先进和成熟。

总结:针对Apache Spark的Scala与Python
“ Scala速度更快,并且易于使用,而Python速度较慢,但​​是非常易于使用。”

Apache Spark框架是用Scala编写的,因此了解Scala编程语言可以帮助大数据开发人员轻松地深入源代码(如果某些功能无法按预期运行)。使用Python会增加出现更多问题和bug的可能性,因为很难在2种不同语言之间进行翻译。使用Scala for Spark可以访问Spark框架的最新功能,因为它们首先在Scala中可用,然后移植到Python。

选择Scala vs Python for Spark取决于最适合项目需求的功能,因为每个功能各有优缺点。在选择用于使用Apache Spark进行编程的语言之前,开发人员必须学习Scala和Python以熟悉其功能。在学习了Python和Scala之后,就应该很容易决定何时将Scala用于Spark和何时将Python用于Spark。在Apache Spark中编程的语言选择纯粹取决于要解决的问题。

我们很想知道您对您选择哪种语言进行Apache Spark编程的意见。请在下面的评论中提及您的选择。

作者 east
python 2月 21,2021

怎样在3分钟内安装PySpark 和 Jupyter Notebook

对于大数据爱好者来说,Apache Spark是必须的。简而言之,Spark是一个快速而强大的框架,它提供了一个API,可以对弹性数据集执行大规模的分布式处理。 Jupyter Notebook是一个流行的应用程序,它使您可以编辑,运行并将Python代码共享到Web视图中。它允许您以非常灵活的方式修改和重新执行部分代码。因此,Jupyter是测试程序和原型的好工具。 Jupyter Notebook运行Python代码 Jupyter Notebook运行Python代码 我为Linux用户撰写了这篇文章,但是我确信Mac OS用户也可以从中受益。 为什么在Jupyter Notebook中使用PySpark? 使用Spark时,大多数数据工程师建议使用Scala(这是“本机” Spark语言)或通过完整的PySpark API使用Python开发。 Python for Spark显然比Scala慢。但是,像许多开发人员一样,我喜欢Python,因为Python灵活,健壮,易学并且可以从我所有的收藏夹库中受益。我认为,Python是大数据/机器学习领域中进行原型开发的理想语言。 现在,让我们开始吧。

安装pySpark


在安装pySpark之前,必须先安装Python和Spark。 我在以下示例中使用的是Python 3,但您可以轻松地使其适应Python2。请访问Python官方网站进行安装。 我也鼓励您建立一个virtualenv
要安装Spark,请确保您的计算机上安装了Java 8或更高版本。 然后,访问Spark下载页面。 选择最新的Spark版本(一个针对Hadoop的预构建包),然后直接下载。

解压缩并将其移动到您的/ opt文件夹:

$ tar -xzf spark-1.2.0-bin-hadoop2.4.tgz

$ mv spark-1.2.0-bin-hadoop2.4 /opt/spark-1.2.0

创建一个软连接

$ ln -s /opt/spark-1.2.0 /opt/spark̀

这样,您将能够下载和使用多个Spark版本。 最后,告诉您的bash(或zsh等)在哪里可以找到Spark。 为此,通过在〜/ .bashrc(或〜/ .zshrc)文件中添加以下几行来配置$ PATH变量:

安装Jupyter Notebook

$ pip install jupyter
$ jupyter notebook

您在Spark上的第一个Python程序
让我们检查是否在没有先使用Jupyter Notebook的情况下正确安装了PySpark。

您可能需要重新启动终端才能运行PySpark

import random
num_samples = 100000000

def inside(p):     
  x, y = random.random(), random.random()
  return x*x + y*y < 1

count = sc.parallelize(range(0, num_samples)).filter(inside).count()

pi = 4 * count / num_samples
print(pi)

sc.stop()

Jupyter使用PySpark


有两种方法可以在Jupyter Notebook中使用PySpark:

配置PySpark驱动程序以使用Jupyter Notebook:运行pyspark将自动打开Jupyter Notebook

加载常规的Jupyter Notebook并使用findSpark软件包加载PySpark

第一种选择更快,但特定于Jupyter Notebook,第二种选择是一种更广泛的方法,可以在您喜欢的IDE中使用PySpark。

方法1 —配置PySpark驱动程序
更新PySpark驱动程序环境变量:将这些行添加到〜/ .bashrc(或〜/ .zshrc)文件中。

export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

重启并加载:

$ pyspark

现在,此命令应在您的Web浏览器中启动Jupyter Notebook。 通过单击“新建”>“ Notebooks Python [默认]”来创建一个新笔记本。

复制并粘贴我们的Pi计算脚本,然后按Shift + Enter运行它。

方法2 — FindSpark程序包
在Jupyter Notebook中使用PySpark还有另一种更通用的方法:使用findSpark包在代码中提供Spark上下文。

findSpark包并非特定于Jupyter Notebook,您也可以在自己喜欢的IDE中使用此技巧。

要安装findspark:

$ pip install findspark
$ jupyter notebook

创建一个新的Python [default]笔记本并编写以下脚本:

import findspark
findspark.init()

import pyspark
import random

sc = pyspark.SparkContext(appName="Pi")
num_samples = 100000000

def inside(p):     
  x, y = random.random(), random.random()
  return x*x + y*y < 1

count = sc.parallelize(range(0, num_samples)).filter(inside).count()

pi = 4 * count / num_samples
print(pi)

sc.stop()

输出结果:

作者 east
Kafka, Spark 2月 21,2021

spark和kafka在数据流处理对比

2625 / 5000

在对Spark Streaming和Kafka Streaming进行比较并得出何时使用哪个比较之前,让我们首先对Data Streaming的基础知识有一个清晰的了解:它是如何出现的,流是什么,如何运行,其协议和用例。 。 数据流如何诞生? 从那时起,数据一直是操作的重要组成部分。数据构成了整个操作结构的基础,其中数据被进一步处理以在系统的不同实体模块中使用。这就是为什么它已成为IT领域的典型代表。 随着技术的发展,数据的重要性变得更加突出。数据处理中使用的方法已经发生了显着变化,以适应软件机构对数据输入的不断增长的需求。 随着时间的增长,数据处理的时间框架急剧缩短,以至于立即处理的输出有望满足最终用户的更高期望。随着人工智能的出现,人们强烈希望为看起来像人类的最终用户提供实时帮助。 此要求仅取决于数据处理强度。越快越好。因此,结果是处理数据的方式发生了变化。较早之前,在指定的延迟之后,有成批的输入被输入到系统中,从而将处理后的数据作为输出。 目前,这种延迟(延迟)是输入性能,处理时间和输出的结果,这已成为性能的主要标准之一。为了确保高性能,延迟必须最小化到几乎是实时的程度。 这就是数据流出现的方式。在数据流处理中,实时数据流作为输入传递,必须立即进行处理,并实时传递输出信息流。

什么是数据流?

数据流传输是一种方法,其中不按常规的批处理方式发送输入,而是以连续流的形式发布该流,并按原样使用算法进行处理。还以连续数据流的形式检索输出。 该数据流是使用数千个源生成的,这些源同时以小尺寸发送数据。这些文件背对背发送时形成连续的流程。这些可能是大量发送的日志文件以进行处理。 这种作为流出现的数据必须被顺序处理以满足(几乎)连续实时数据处理的要求。

为什么需要数据流?


随着企业在线人数的增加以及随之而来的对数据的依赖,人们已经意识到了数据的方式。数据科学和分析技术的出现导致大量数据的处理,为实时数据分析,复杂数据分析,实时流分析和事件处理提供了可能性。

当输入数据大小庞大时,需要进行数据流传输。我们需要先存储数据,然后再将其移动以进行批处理。由于数据以多批次的形式存储,因此涉及大量时间和基础架构。为了避免所有这些情况,信息以小数据包的形式连续流传输以进行处理。数据流提供超可伸缩性,这仍然是批处理的挑战。

使用数据流传输的另一个原因是要提供近乎实时的体验,其中最终用户在输入数据时会在几秒钟或几毫秒内获得输出流。

当数据源似乎无穷无尽且无法为批处理中断时,也需要进行数据流传输。 IoT传感器在此类别中发挥了重要作用,因为它们会生成连续的读数,需要对其进行处理以得出推论。

数据流如何发生?


为了通过实时处理数据做出即时决策,可以进行数据流传输。 根据系统的规模,复杂性,容错性和可靠性要求,您可以使用工具,也可以自己构建。

自行构建它意味着您需要在编码角色之前将事件放置在诸如Kafka之类的消息代理主题中。 这里的参与者是一段代码,旨在接收来自代理中的问题的事件(即数据流),然后将输出发布回代理。

Spark是第一代Streaming Engine,它要求用户编写代码并将其放置在actor中,他们可以进一步将这些actor连接在一起。 为了避免这种情况,人们经常使用Streaming SQL进行查询,因为它使用户可以轻松地查询数据而无需编写代码。 流SQL是对SQL的扩展支持,可以运行流数据。 此外,由于SQL在数据库专业人员中已得到很好的实践,因此执行流式SQL查询将更加容易,因为它基于SQL。

这是用例的流式SQL代码,在这种情况下,如果池中的温度在2分钟内下降了7度,则必须向用户发送警报邮件。

@App:name("Low Pool Temperature Alert")

@App: description('An application which detects an abnormal decrease in swimming pools temperature.')

@source(type='kafka',@map(type='json'),bootstrap.servers='localhost:9092',topic.list='inputStream',group.id='option_value',threading.option='single.thread')

define stream PoolTemperatureStream(pool string, temperature double);

@sink(type='email', @map(type='text'), ssl.enable='true',auth='true',content.type='text/html', username='sender.account', address='sender.account@gmail.com',password='account.password', subject="Low Pool Temperature Alert", to="receiver.account@gmail.com")

define stream EmailAlertStream(roomNo string, initialTemperature double, finalTemperature double);

--Capture a pattern where the temperature of a pool decreases by 7 degrees within 2 minutes

@info(name='query1')

from every( e1 = PoolTemperatureStream ) -> e2 = PoolTemperatureStream [e1.pool == pool and (e1.temperature + 7.0) >= temperature]

    within 2 min

select e1.pool, e1.temperature as initialTemperature, e2.temperature as finalTemperature

insert into EmailAlertStream;

Spark SQL提供DSL(特定于域的语言),这将有助于以不同的编程语言(例如Scala,Java,R和Python)操纵DataFrame。 它使您可以使用SQL或DataFrame API对Spark程序内部的结构化数据执行查询。 Kafka等新一代流引擎也支持Kafka SQL或KSQL形式的Streaming SQL。

尽管流处理的过程大致相同,但此处重要的是根据用例要求和可用的基础结构选择流引擎。 在得出结论之前,什么时候使用Spark Streaming和什么时候使用Kafka Streaming,让我们首先探索Spark Streaming和Kafka Streaming的基础知识,以更好地理解。

什么是Spark Streaming?

Spark Streaming是核心Spark API的扩展,可让其用户执行实时数据流的流处理。 它从Kafka,Flume,Kinesis或TCP套接字等来源获取数据。 可以使用复杂的算法对这些数据进行进一步处理,这些复杂的算法使用诸如map,reduce,join和window之类的高级功能表示。 最终输出(即处理后的数据)可以推送到诸如HDFS文件系统,数据库和实时仪表板之类的目标。

让我们仔细看看Spark Streaming的工作原理。 Spark Streaming从数据源以数据流的形式获取实时输入,并将其进一步分为几批,然后由Spark引擎处理以生成大量输出。 Spark Streaming允许您将机器学习和图形处理用于数据流以进行高级数据处理。它还提供了代表连续数据流的高级抽象。 数据流的这种抽象称为离散流或DStream。该DStream可以通过对Kafka,Flume和Kinesis等来源的数据流或其他DStream进行高级操作来创建。 这些DStream是RDD(弹性分布式数据集)的序列,RDD是分布在计算机集群上的多个只读数据集。这些RDD以容错方式进行维护,使其具有高度鲁棒性和可靠性。DStreams序列Spark Streaming使用Spark Core的快速数据调度功能来执行流分析。从诸如Kafka,Flume,Kinesis等之类的源中以迷你批的形式摄取的数据用于执行数据流处理所需的RDD转换。


Spark Streaming使您可以根据需要使用Scala,Java或Python编写程序来处理数据流(DStreams)。由于此处将用于批处理的代码用于流处理,因此使用Spark Streaming实现Lambda体系结构(将批处理和流处理混合在一起)变得容易得多。但这是以等于最小批处理持续时间的延迟为代价的。 Spark Streaming中的输入源 Spark支持主要来源,例如文件系统和套接字连接。另一方面,它也支持高级资源,例如Kafka,Flume,Kinesis。只有添加额外的实用程序类,才能获得这些出色的资源。 您可以使用以下工件链接Kafka,Flume和Kinesis。

kafka:spark-streaming-kafka-0-10_2.12

flume:spark-streaming-flume_2.12

Kinesis:spark-streaming-kinesis-asl_2.12

什么是Kafka流媒体?

Kafka Stream是一个客户端库,可让您处理和分析从Kafka接收的数据输入,并将输出发送到Kafka或其他指定的外部系统。 Kafka依赖于流处理概念,例如: 准确区分事件时间和处理时间 窗口支持 高效直接的应用程序状态管理 通过利用Kafka中的生产者和消费者库来利用Kafka的本机功能,从而简化了应用程序开发,从而使其更加直接和快捷。正是由于这种原生的Kafka潜力,使得Kafka流式传输可以提供数据并行性,分布式协调,容错性和操作简便性。 Kafka Streaming中的主要API是提供多个高级运算符的流处理DSL(特定于域的语言)。这些运算符包括:筛选器,映射,分组,窗口,聚合,联接和表的概念。 Kafka中的消息传递层对进一步存储和传输的数据进行分区。根据状态事件在Kafka流中对数据进行分区,以进行进一步处理。通过将拓扑划分为多个任务来缩放拓扑,其中为每个任务分配了输入流中的分区列表(Kafka主题),从而提供了并行性和容错能力。

Kafka可以进行状态转换,与Spark Streaming中的批处理不同。 它在其主题内存储状态,流处理应用程序将其用于存储和查询数据。 因此,其所有操作均受状态控制。 这些状态还用于连接主题以形成事件任务.Kafka中基于状态的操作 这是由于Kafka中基于状态的操作使其具有容错能力,并允许从本地状态存储中自动恢复。 Kafka Streaming中的数据流是使用表和KStreams的概念构建的,这有助于它们提供事件时间处理。

Spark Streaming与Kafka Streaming:

何时使用什么 Spark Streaming使您可以灵活地选择任何类型的系统,包括具有lambda架构的系统。但是,Spark Streaming的延迟范围从毫秒到几秒。 如果延迟不是一个重要的问题,并且您正在寻找在源兼容性方面的灵活性,那么Spark Streaming是最佳选择。可以在EC2,Hadoop YARN,Mesos或Kubernetes上使用独立的集群模式运行Spark Streaming。 它可以访问HDFS,Alluxio,Apache Cassandra,Apache HBase,Apache Hive和许多其他数据源中的数据。它提供了容错能力,还提供了Hadoop分发。 此外,在Spark流式传输的情况下,您不必为批处理和流式传输应用程序分别编写多个代码,在这种情况下,单个系统可以同时满足这两种情况。 另一方面,如果延迟是一个重要问题,并且必须坚持以短于毫秒的时间范围进行实时处理,则必须考虑使用Kafka Streaming。由于事件驱动处理,Kafka Streaming提供了高级的容错能力,但是与其他类型的系统的兼容性仍然是一个重要的问题。此外,在高可伸缩性要求的情况下,Kafka具有最佳的可伸缩性,因此非常适合。

如果您要处理从Kafka到Kafka的本机应用程序(输入和输出数据源都在Kafka中),则Kafka流式传输是您的理想选择。 虽然Kafka Streaming仅在Scala和Java中可用,但Spark Streaming代码可以用Scala,Python和Java编写。 结束语 随着技术的发展,数据也随着时间大量增长。处理此类海量数据的需求以及对实时数据处理的日益增长的需求导致了数据流的使用。通过几种数据流方法,尤其是Spark Streaming和Kafka Streaming,全面了解用例以做出最适合需求的最佳选择变得至关重要。 在用例中优先考虑需求对于选择最合适的流技术至关重要。鉴于事实,Spark Streaming和Kafka Streaming都是高度可靠的,并且广泛推荐作为Streaming方法,它在很大程度上取决于用例和应用程序,以确保最佳效果。 在本文中,我们指出了两种流传输方法的专业领域,以便为您提供更好的分类,这可以帮助您确定优先级并做出更好的决策。

作者 east
flume 2月 20,2021

Flume处理Spooling Directory Source数据太慢优化

一个数据采集处理系统,架构如下:

日志数据 -> flume -> kafka -> Spark Streaming。

flume到kafka的数据处理时间是1秒多;而spark Streaming的数据处理时间是十几毫秒。

flume方面:

flume数量不够:增加日志服务器以增加并行度;

(1)自身:增加内存flume-env.sh 4-6g

-Xmx与-Xms最好设置一致,减少内存抖动带来的性能影响,如果设置不一致容易导致频繁fullgc。

(2)找朋友:多个目录,多个spooling directory source同时采集

(3)taildir source的batchsize修改为合适的值

( 4 ) flume要读取文件夹如果文件太多,要按最新或最早顺序读取时,会很影响速度。

# batchsize是每次处理的数据条数越高,处理的数据越多,延迟越高。

kafka数据积压的问题,主要的解决办法是:

(1)增加Kafka对应的分区数(比如:期望处理数据的总吞吐量是100M/s。但是实际最多每个分区的生产能力和消费能力的最小值是20M/s,那么我们就需要设置5个或者6个分区),2)要求下一级消费者配套增加CPU核数,动态增加Kafka服务器集群。

(2)kafka ack设成0(ack有0有1有-1。0的可靠性最差,但是速度最快)

注:ack有3个可选值,分别是1,0,-1。

ack=1,简单来说就是,producer只要收到一个分区副本成功写入的通知就认为推送消息成功了。这个副本必须是leader副本。只有leader副本成功写入了,producer才会认为消息发送成功。

ack=0,简单来说就是,producer发送一次就不再发送了,不管是否发送成功。

ack=-1,简单来说就是,producer只有收到分区内所有副本的成功写入的通知才认为推送消息成功了。

(3) a1.channels.c1.type = memory memory类型可能会丢失数据,但是速度最快。

作者 east

上一 1 … 63 64 65 … 92 下一个

关注公众号“大模型全栈程序员”回复“小程序”获取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删除.