天道酬勤,学无止境

hadoop

如何获取配置单元中给定时区的当前时间(How to get current time for a given timezone in hive)

问题 我在 Hive 中有 2 张桌子。 表 1 包含 timelocation 2015-03-04 15:00 Chicago 2015-03-04 15:00 Denver 2015-03-04 15:00 Honolulu 表2包含 ID Description America/Chicago CENTRAL STANDARD TIME America/Denver MOUNTAIN STANDARD TIME Pacific/Honolulu HAWAII-ALEUTIAN STANDARD TIME 对于 table1 中存在的记录说 "2015-03-04 15:00 Chicago" ,我需要在 table2 中查找相应的芝加哥记录。 它应该读取芝加哥的 ID 和描述并返回芝加哥的当前中央标准时间,即“2015-05-04 09:11”。 同样,对于丹佛,它必须返回山地标准时间,对于檀香山,它必须返回 HAWAII-ALEUTIAN 标准时间。 预期输出是 timelocation 2015-05-04 09:11 2015-05-04 08:11 2015-05-04 04:11 我该怎么做? 回答1 我真的不想为您编写此查询,但希望这会为您指明正确的方向。 您需要加入tbl1 <=> tbl2 。 从每个表的相应列中提取城市; split()函数会帮助你。 然后

2021-09-20 16:59:42    分类:技术分享    java   hadoop   hive

如何用 Pig 将 (A, B, C) 变成 (AB, AC, BC)?(How to turn (A, B, C) into (AB, AC, BC) with Pig?)

问题 在 Pig 中,给定以下包:(A, B, C),我可以以某种方式计算所有值的唯一组合吗? 我正在寻找的结果类似于 (AB, AC, BC)。 我不考虑 BA、CA、CB,因为如果按字母顺序排序,它们将成为现有值的重复项。 回答1 做这样的事情的唯一方法是编写一个 UDF。 这将完全符合您的要求: public class CombinationsUDF extends EvalFunc<DataBag> { public DataBag exec(Tuple input) throws IOException { List<Tuple> bagValues = new ArrayList<Tuple>(); Iterator<Tuple> iter = ((DataBag)input.get(0)).iterator(); while (iter.hasNext()) { bagValues.add(iter.next()); } List<Tuple> outputTuples = new ArrayList<Tuple>(); for (int i = 0; i < bagValues.size() - 1; i++) { List<Object> currentTupleValues = bagValues.get(i).getAll(); for (int j = i

2021-09-20 15:20:32    分类:技术分享    hadoop   apache-pig

如何与 hadoop 2.x 并行运行 MapReduce 任务?(How to run MapReduce tasks in Parallel with hadoop 2.x?)

问题 我希望我的 map 和 reduce 任务并行运行。 然而,尽管尝试了包里的每一个技巧,它们仍然是按顺序运行的。 我从如何在 Elastic MapReduce 上的 Hadoop 2.4.0 中设置每个节点并发运行任务的精确最大数量,使用以下公式,可以设置并行运行的任务数量。 min (yarn.nodemanager.resource.memory-mb / mapreduce.[map|reduce].memory.mb, yarn.nodemanager.resource.cpu-vcores / mapreduce.[map|reduce].cpu.vcores) 但是,我这样做了,正如您从下面使用的yarn-site.xml和mapred-site.xml 中看到的那样。 但任务仍然按顺序运行。 请注意,我使用的是开源 Apache Hadoop 而不是 Cloudera。 转移到 Cloudera 会解决问题吗? 另请注意,我的输入文件足够大, dfs.block.size也不应该成为问题。 纱线站点.xml <configuration> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>131072</value> </property> <property> <name

2021-09-20 14:31:49    分类:技术分享    java   hadoop   mapreduce   bigdata   cloudera-cdh

hadoop 中 KeyValueTextInputFormat 和 TextInputFormat 的主要区别是什么?(What are the main differences between KeyValueTextInputFormat and TextInputFormat in hadoop?)

问题 有人可以给我一个我们必须使用KeyValueTextInputFormat和TextInputFormat实际场景吗? 回答1 TextInputFormat类将源文件的每一行转换为键/值类型,其中 BytesWritable 键表示记录的偏移量,而 Text 值表示整个记录本身。 KeyValueTextInputFormat是 TextInputFormat 的扩展版本,当我们必须以 Text/Text 对获取每个源记录时很有用,其中键/值是通过用固定分隔符拆分记录来从记录中填充的。 考虑以下文件内容, AL#Alabama AR#Arkansas FL#Florida 如果已配置TextInputFormat ,您可能会看到键/值对为, 0 AL#Alabama 14 AR#Arkansas 23 FL#Florida 如果KeyvalueTextInputFormat配置为conf.set("mapreduce.input.keyvaluelinerecordreader.key.value.separator", "#") ,您可能会看到结果, AL Alabama AR Arkansas FL Florida 回答2 keyvaluetextinputformat 允许您从输入文件中指定键,其中 textinputfileformat 有一个固定键,即字节偏移量。

2021-09-20 11:43:11    分类:技术分享    hadoop   mapreduce

使用 org.apache.hadoop/* 依赖项离线编译 sbt 的问题(Troubles with sbt compiling offline using org.apache.hadoop/* dependencies)

问题 使用依赖于 org.apache.hadoop 包的 sbt 进行离线编译时遇到了很多麻烦。 一个简单的 build.sbt: name := "Test" version := "1.0" scalaVersion := "2.10.4" libraryDependencies += "org.apache.hadoop" % "hadoop-yarn-api" % "2.2.0" 在线时工作正常,但离线运行时会出现以下错误,而包存在于 ivy 缓存中(在 ~/ivy2/cache/org.apache.hadoop/... 下): [info] Loading project definition from /home/martin/Dev/S/project [info] Set current project to Test (in build file:/home/martin/Dev/S/) [info] Updating {file:/home/martin/Dev/S/}s... [info] Resolving org.apache.hadoop#hadoop-yarn-api;2.2.0 ... [warn] Host repo1.maven.org not found. url=https://repo1.maven.org/maven2/org

2021-09-20 10:50:34    分类:技术分享    scala   hadoop   sbt   ivy

Apache Spark - Spark 中的内部作业调度程序如何定义什么是用户和什么是池(Apache Spark - How does internal job scheduler in spark define what are users and what are pools)

问题 我很抱歉在这里有点笼统,但我对 Spark 内部的作业调度如何工作感到有些困惑。 从这里的文档中,我了解到它是 Hadoop Fair Scheduler 的某种实现。 我无法理解这里的用户到底是谁(是 linux 用户、hadoop 用户还是 spark 客户端?)。 我也无法理解这里的池是如何定义的。 例如,在我的 hadoop 集群中,我将资源分配给了两个不同的池(我们称它们为团队 1 和团队 2)。 但是在火花集群中,不同的池和其中的用户不会实例化自己的火花上下文吗? 这再次让我质疑,当我将属性设置为 spark.scheduler.pool 时,我传递了哪些参数。 我对驱动程序如何实例化 spark 上下文,然后将它们拆分为任务和作业有一个基本的了解。 可能我在这里完全忽略了这一点,但我真的很想了解 Spark 的内部调度程序如何在操作、任务和工作的上下文中工作 回答1 我发现官方文档非常详尽,涵盖了您的所有问题。 但是,从第一次开始,人们可能会发现很难消化。 在深入研究细节之前,让我们先给出一些定义和粗略的类比。 application是创建 SparkContext sc ,可能被称为您使用spark-submit部署的东西。 job是转换和动作的火花定义中的动作,意思是计数,收集等。 有两个主要的并且在某种意义上是独立的主题

2021-09-20 09:13:32    分类:技术分享    scala   hadoop   apache-spark   bigdata   job-scheduling

How to disable Hadoop Kerberos(How to disable Hadoop Kerberos)

问题 我使用内部脚本来设置 Hadoop 集群。 默认情况下,它使用 Kerberos 配置了 Hadoop 安全性。 这对于开发环境来说是非常不方便的。 我用谷歌搜索了很多,但结果都是关于“如何启用......”。 请帮忙给一些参考或建议。 回答1 更改以下值: 核心站点.xml(HDFS): hadoop.security.authentication到simple hadoop.security.authorization为false hdfs-site.xml(HDFS): dfs.datanode.address到50010 dfs.datanode.http.address到50075 hbase-site.xml(HBASE): hbase.security.authentication到simple hbase.security.authorization为false 注释这些属性(如果存在): hbase.regionserver.kerberos.principal 、 hbase.regionserver.keytab.file 、 hbase.master.kerberos.principal 、 hbase.master.keytab.file 、 hbase.rpc.engine 。 动物园.cfg: 注释这些行(如果存在): kerberos

2021-09-20 06:26:41    分类:技术分享    hadoop   kerberos

hive.HiveImport:失败:SemanticException [错误 10072]:数据库不存在:(hive.HiveImport: FAILED: SemanticException [Error 10072]: Database does not exist:)

问题 我正在尝试将 MySQL 数据库导入 Hive 以根据博客分析大型 MySQL 数据,有几种方法可以做到这一点 非实时:Sqoop 实时:用于 MySQL 的 Hadoop 应用程序 所以我决定采用“非实时”方法,并且我已经设置了具有 4 个节点、Sqoop 和 Hive 的 Hadoop 集群,它们在以下版本中运行良好 名称版本 Apache Hadoop 2.6.0 Apache Hive hive-0.14.0 Apache Sqoop sqoop-1.4.5.bin__hadoop-2.0.4-alpha 现在当我尝试使用以下命令导入数据时 导入命令 sqoop-import-all-tables --verbose --connect jdbc:mysql://X.X.X.X/edgeowt --username root -P --hive-import --warehouse-dir /user/hive/warehouse --hive-database edgeowt.db --hive-overwrite 然后我收到以下错误 错误 INFO hive.HiveImport: FAILED: SemanticException [Error 10072]: Database does not exist: edgeowt.db 15/04/16 13:32

2021-09-20 03:58:25    分类:技术分享    mysql   hadoop   hive   sqoop   hadoop2

使用 MASTER=yarn-cluster 运行 HiveFromSpark 示例(Run HiveFromSpark example with MASTER=yarn-cluster)

问题 我正在尝试在我的 EMR Spark/Hive 集群上运行 HiveFromSpark 示例。 问题 使用纱线客户端: ~/spark/bin/spark-submit --master yarn-client --num-executors=19 --class org.apache.spark.examples.sql.hive.HiveFromSpark ~/spark/lib/spark-examples-1.3.0-hadoop2.4.0.jar 奇迹般有效。 但是,使用纱线簇: ~/spark/bin/spark-submit --master yarn-cluster --num-executors=19 --class org.apache.spark.examples.sql.hive.HiveFromSpark ~/spark/lib/spark-examples-1.3.0-hadoop2.4.0.jar 失败: Exception in thread "main" org.apache.spark.SparkException: Application finished with failed status at org.apache.spark.deploy.yarn.Client.run(Client.scala:622) at org

2021-09-20 02:57:24    分类:技术分享    hadoop   apache-spark   amazon-emr   apache-spark-sql

如何设置多个具有不同批处理持续时间的 Spark Streaming 作业?(How do you setup multiple Spark Streaming jobs with different batch durations?)

问题 我们正处于转换大型企业当前数据架构的开始阶段,我目前正在构建一个 Spark Streaming ETL 框架,在该框架中我们将所有源连接到目标(源/目标可以是 Kafka 主题、Flume、HDFS、等)通过转换。 这看起来像: SparkStreamingEtlManager.addEtl(Source, Transformation*, Destination) SparkStreamingEtlManager.streamEtl() streamingContext.start() 假设是,由于我们应该只有一个 SparkContext,我们会将所有 ETL 管道部署在一个应用程序/jar 中。 问题在于 batchDuration 是上下文本身的属性,而不是 ReceiverInputDStream 的属性(为什么会这样?)。 因此,我们是否需要拥有多个 Spark 集群,或者允许多个 SparkContext 并部署多个应用程序? 有没有其他方法可以控制每个接收器的批处理持续时间? 如果我的任何假设是幼稚的或需要重新表述,请告诉我。 谢谢! 回答1 根据我的经验,不同的流有不同的调优要求。 吞吐量、延迟、接收方的容量、要遵守的 SLA 等。 为了满足这种多样性,我们需要配置每个 Spark Streaming 作业来解决所述特殊性。 因此,不仅是批处理间隔

2021-09-20 01:51:28    分类:技术分享    hadoop   apache-spark   spark-streaming