我的Java应用程序在mapper上运行,并使用Qubole API创建子进程.应用程序存储子qubole queryIDs.我需要在退出之前拦截kill信号并关闭子进程.hadoop job -kill jobId
和yarn application -kill applicationId
命令以SIGKILL方式查杀,我不知道如何拦截关机.是否有可能以某种方式拦截作业终止或配置hadoop以给予应用程序机会优雅地关闭?
应用程序在本地运行时使用ShutdownHook成功拦截关闭,而不是在映射器容器中并且能够杀死它的子进程.
请建议如何在mapper中运行时拦截关机,或者我做错了什么?
下面返回按 的值分层10%
的A
和X
列的样本X
。
select A, X from(
select A,
count(*) over (partition by X) as cnt,
rank() over (partition by X order by rand()) as rnk
from my_table) table
where rnk <= cnt*0.1
Run Code Online (Sandbox Code Playgroud)
换句话说,如果X
取值,[X0, X1]
它返回以下的并集:
X = X0
X = X1
如何按多列(例如,)的元组值对查询进行分层?X
Y
例如,如果X
采用 values[X0, X1]
而 Y 采用 values [Y0, Y1]
,我想得到一个样本,它是以下各项的并集:
X = X0
和 …我从s3文件输入以下DataFrame,需要将数据转换为以下所需的输出.我使用Spark版本1.5.1和Scala,但可以用Python改为Spark.欢迎任何建议.
DataFrame输入:
name animal data
john mouse aaaaa
bob mouse bbbbb
bob mouse ccccc
bob dog ddddd
Run Code Online (Sandbox Code Playgroud)
期望的输出:
john/mouse/file.csv
bob/mouse/file.csv
bob/dog/file.csv
terminal$ cat bob/mouse/file.csv
bbbbb
ccccc
terminal$ cat bob/dog/file.csv
ddddd
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的现有Spark Scala代码:
val sc = new SparkContext(new SparkConf())
val sqlc = new org.apache.spark.sql.SQLContext(sc)
val df = sqlc.read.json("raw.gz")
val cols = Seq("name", "animal")
df.groupBy(cols.head, cols.tail: _*).count().take(100).foreach(println)
Run Code Online (Sandbox Code Playgroud)
电流输出:
[john,mouse,1]
[bob,mouse,2]
[bob,dog,1]
Run Code Online (Sandbox Code Playgroud)
我现有代码的一些问题是groupBy返回一个GroupedData对象,我可能不想对该数据执行count/sum/agg函数.我正在寻找一种更好的技术来分组和输出数据.数据集非常大.
为了减少配置时间,我们决定保留一个具有5个实例的专用EMR集群(我们预计需要大约5个).如果我们需要更多,我们认为我们需要实现某种自动缩放.
我对EMR一点都不熟悉 - 它是否支持自动缩放?我在文档中找到了这个:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-manage-resize.html
这是寻找自动缩放的正确位置,还是我误解了"调整大小"的含义.我已经读过EMR的一个好处是"按需处理",我认为它在ec2实例之间分配负载而不指定多少个实例,所以这给我的印象就是它自己对ec2实例进行扩展,这意味着我们不需要自我修改.我误解了"按需处理"的含义吗?
如果我提供的调整大小链接适合我正在尝试做的事情,有没有人有确定何时调整大小的经验?该文档仅描述了如何但不是,例如,如何为何时调整大小设置警报.我已经使用了他们的常规自动缩放服务,它允许你根据某些条件调整大小,但我在这里没有看到.
我仍然不确定自动调节EMR是否是一个坏主意 - 它是否过于复杂(因为像Qubole这样的整个公司提供了这个)或者可能不是很有用,因为EMR已经使用了它需要的任何计算能力?我不太了解EMR究竟提供了什么,所以也许这就是为什么我感到困惑.