我正在运行通过EMR控制台下拉列表安装Spark(1.3.1)的AWS EMR集群.Spark是当前和处理数据,但我试图找到已分配给WebUI的端口.我尝试过端口转发4040和8080没有连接.我这样转发
ssh -i ~/KEY.pem -L 8080:localhost:8080 hadoop@EMR_DNS
Run Code Online (Sandbox Code Playgroud)
1)如何找出Spark WebUI分配的端口是什么?2)如何验证Spark WebUI是否正在运行?
我有M行和4列的矩阵(M1).我有另一个1行和4列的数组(M2).我想通过M2中各自的列元素减去M1中的每个元素.换句话说,M1的每列需要由M2中相同列位置的标量子跟踪.我可以调用repmat(M2,M,1),这会创建一个大小为MxN的新矩阵,其中列中的每个元素都是相同的,然后按元素减法执行元素:
M2new = repmat(M2,M,1)
final = M1 - M2new
Run Code Online (Sandbox Code Playgroud)
但是,这是两行代码并在内存中创建一个新元素.执行此操作的最快且内存最少的方法是什么?
我有一个2D"热图"或PDF,我需要通过随机抽样重新创建.IE我有一个显示起始位置的二维概率密度图.我需要以与原始PDF相同的概率随机选择起始位置.
要做到这一点,我想我需要首先找到联合CDF(累积密度函数),然后选择随机统一数字来对CDF进行采样.这就是我被卡住的地方.
我如何在数字上找到我的PDF的联合CDF?我尝试沿两个维度进行累积求和,但这并没有产生正确的结果.我的统计知识让我失望.
编辑热图/ PDF是[x,y,z]的形式,其中Z是每个x,y点的强度或概率.
我正在尝试评估使用 Kinesis 进行流处理日志文件。有一个单独的进程将新日志上传到 S3 存储桶 - 我无法触及该进程。我想知道是否有一种好方法可以将 S3 日志存储桶中显示的新文件流式传输到Kinesis 流中进行处理。到目前为止我找到的所有文档都涵盖了使用 S3 作为流的输出。
我当前的解决方案是让一台机器不断轮询 S3 是否有新文件,将新文件下载到本地机器并使用 Log4j 附加程序将其流式传输。这看起来效率很低。有没有更好的办法?
我有数据存储在S3中,如:
/bucket/date=20140701/file1
/bucket/date=20140701/file2
...
/bucket/date=20140701/fileN
/bucket/date=20140702/file1
/bucket/date=20140702/file2
...
/bucket/date=20140702/fileN
...
Run Code Online (Sandbox Code Playgroud)
我的理解是,如果我通过Hive引入该数据,它将自动解释date为分区.我的表创建如下:
CREATE EXTERNAL TABLE search_input(
col 1 STRING,
col 2 STRING,
...
)
PARTITIONED BY(date STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
LOCATION 's3n://bucket/';
Run Code Online (Sandbox Code Playgroud)
但是,Hive无法识别任何数据.我运行的任何查询返回0结果.如果我只是通过以下方式获取其中一个日期:
CREATE EXTERNAL TABLE search_input_20140701(
col 1 STRING,
col 2 STRING,
...
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
LOCATION 's3n://bucket/date=20140701';
Run Code Online (Sandbox Code Playgroud)
我可以很好地查询数据.
为什么Hive不能识别带有"date = date_str"分区的嵌套目录?有没有更好的方法让Hive在多个子目录上运行查询并根据日期时间字符串对其进行切片?
基于 1.4 ( https://spark.apache.org/docs/1.4.0/mllib-feature-extraction.html )的 Spark 文档,我正在编写一个 TF-IDF 示例,用于将文本文档转换为值向量。给出的示例显示了如何做到这一点,但输入是没有 key的令牌 RDD 。这意味着我的输出 RDD 不再包含索引或键来引用原始文档。这个例子是这样的:
documents = sc.textFile("...").map(lambda line: line.split(" "))
hashingTF = HashingTF()
tf = hashingTF.transform(documents)
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
documents = sc.textFile("...").map(lambda line: (UNIQUE_LINE_KEY, line.split(" ")))
hashingTF = HashingTF()
tf = hashingTF.transform(documents)
Run Code Online (Sandbox Code Playgroud)
并让结果tf变量在UNIQUE_LINE_KEY某处包含该值。我只是错过了一些明显的东西吗?从示例来看,似乎没有什么好的方法可以将documentRDD 与tfRDD 联系起来。
我正在使用 Dask 分配一些函数的计算。我的总体布局如下所示:
from dask.distributed import Client, LocalCluster, as_completed
cluster = LocalCluster(processes=config.use_dask_local_processes,
n_workers=1,
threads_per_worker=1,
)
client = Client(cluster)
cluster.scale(config.dask_local_worker_instances)
work_futures = []
# For each group do work
for group in groups:
fcast_futures.append(client.submit(_work, group))
# Wait till the work is done
for done_work in as_completed(fcast_futures, with_results=False):
try:
result = done_work.result()
except Exception as error:
log.exception(error)
Run Code Online (Sandbox Code Playgroud)
我的问题是,对于大量工作,我往往会达到内存限制。我看到很多:
distributed.worker - WARNING - Memory use is high but worker has no data to store to disk. Perhaps some other process is leaking memory? …Run Code Online (Sandbox Code Playgroud) 我正在对节点丢失时发生的 YARN 应用程序故障进行故障排除,因此我正在尝试重新创建此场景。但我只能强制节点关闭而不是丢失。我正在使用 AWS EMR,并且尝试过:
shutdown -h nowsudo stop hadoop-yarn-nodemanager和sudo stop hadoop-hdfs-datanodekill -9 <pid>那些导致 SHUTDOWN 节点但不是 LOST 节点。
如何在 AWS EMR 中创建 LOST 节点?
Spark MLLIb具有HashingTF()函数,该函数根据每个术语的散列值计算文档术语频率.
1)它用什么函数来进行散列?
2)如何从Python获得相同的散列值?
3)如果我想计算给定单个输入的散列输出,而不计算术语频率,我该怎么做?
apache-spark ×3
amazon-emr ×2
amazon-s3 ×2
algorithm ×1
dask ×1
hadoop ×1
hadoop-yarn ×1
hash ×1
hive ×1
matlab ×1
memory ×1
probability ×1
pyspark ×1
python ×1
statistics ×1
subtraction ×1
tf-idf ×1