我使用Spark 1.3.0和python api.在转换庞大的数据帧时,我会缓存许多DF以加快执行速度;
df1.cache()
df2.cache()
Run Code Online (Sandbox Code Playgroud)
一旦某些数据帧的使用结束并且不再需要,我怎样才能从内存中删除DF(或取消缓存它?)?
例如,df1
在用于df2
少量转换的情况下使用整个代码,之后,它永远不需要.我想强行放下df2
以释放更多的内存空间.
我有一个csv文件; 我在pyspark中转换为DataFrame(df); 经过一番改造; 我想在df中添加一列; 这应该是简单的行id(从0或1开始到N).
我在rdd中转换了df并使用"zipwithindex".我将生成的rdd转换回df.这种方法有效,但它产生了250k的任务,并且需要花费大量的时间来执行.我想知道是否还有其他方法可以减少运行时间.
以下是我的代码片段; 我正在处理的csv文件很大; 包含数十亿行.
debug_csv_rdd = (sc.textFile("debug.csv")
.filter(lambda x: x.find('header') == -1)
.map(lambda x : x.replace("NULL","0")).map(lambda p: p.split(','))
.map(lambda x:Row(c1=int(x[0]),c2=int(x[1]),c3=int(x[2]),c4=int(x[3]))))
debug_csv_df = sqlContext.createDataFrame(debug_csv_rdd)
debug_csv_df.registerTempTable("debug_csv_table")
sqlContext.cacheTable("debug_csv_table")
r0 = sqlContext.sql("SELECT c2 FROM debug_csv_table WHERE c1 = 'str'")
r0.registerTempTable("r0_table")
r0_1 = (r0.flatMap(lambda x:x)
.zipWithIndex()
.map(lambda x: Row(c1=x[0],id=int(x[1]))))
r0_df=sqlContext.createDataFrame(r0_2)
r0_df.show(10)
Run Code Online (Sandbox Code Playgroud) python apache-spark apache-spark-sql pyspark spark-dataframe
我有一个私人docker存储库,其中存储了10个容器映像。我想将所有图像拖到机器上。有没有办法我可以用一个命令从存储库中提取所有图像?一些命令,如
docker pull xx.xx.com/reponame/*
Run Code Online (Sandbox Code Playgroud)
在研究过程中,我发现了提取单个图像的所有标签的方法;但到目前为止在所有图像上都没有运气
我想在我的 k8s 设置中设置更高的日志记录详细程度。虽然我设法通过--v=4
参数为 API 服务器和 Kubectl 启用了详细信息;我很难找到将这个标志传递给 Kubelet 的方法。
我正在使用kubeadm init
方法来启动小型集群,其中 master 也被污染,因此它可以充当 minion。你能帮助启用 kubelet 日志记录吗?
我正在使用tcpdump捕获网络数据包,并且在开始丢弃数据包时遇到问题。我运行了一个通过网络快速交换数据包的应用程序;导致较高的网络带宽。
>> tcpdump -i eno1 -s 64 -B 919400
126716 packets captured
2821976 packets received by filter
167770 packets dropped by kernel
Run Code Online (Sandbox Code Playgroud)
由于我只对TCP数据包中与协议相关的部分感兴趣,我想收集没有数据/有效载荷的TCP数据包。我希望这种策略也可以帮助在丢弃数据包之前捕获更多数据包。看来我只能将缓冲区大小(-B参数)增加到一定限制。即使具有更高的限制,我丢弃的数据包也比捕获的更多。
你能帮助我理解上面的信息和问题吗
我无法使用 JMX 导出器公开 kafka 指标。您可以查看我的步骤并在需要的地方纠正我吗?\n我正在按照此处的步骤使用 JMX 导出器启用 kafka。
\n\n以下是我遵循的分步说明
\n\n#get kafka\nwget kafka_2.11-2.0.0\n\n# Download Prometheus JMX exporter:\nsudo wget -P /opt/kafka/prometheus/ https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.0/jmx_prometheus_javaagent-0.3.0.jar\nsudo wget -P /opt/kafka/prometheus/ https://raw.githubusercontent.com/prometheus/jmx_exporter/master/example_configs/kafka-0-8-2.yml\n\n#Edit Prometheus JMX exporter config file; and append following lines \necho \xe2\x80\x9c- pattern : kafka.producer<type=producer-metrics, client-id=(.+)><>(.+):\\w* name: kafka_producer_$2\xe2\x80\x9d >> /opt/kafka/prometheus/kafka-0-8-2.yml\necho \xe2\x80\x9c\xe2\x80\x94 pattern : kafka.consumer<type=consumer-metrics, client-id=(.+)><>(.+):\\w* name: kafka_consumer_$2\xe2\x80\x9d >> /opt/kafka/prometheus/kafka-0-8-2.yml\necho \xe2\x80\x9c\xe2\x80\x94 pattern : kafka.consumer<type=consumer-fetch-manager-metrics, client-id=(.+)><>(.+):\\w* name: kafka_consumer_$2\xe2\x80\x9d >> /opt/kafka/prometheus/kafka-0-8-2.yml\n\n\n#start zookeeper in terminal 0\n/opt/kafka/bin/zookeeper-server-start.sh config/zookeeper.properties\n\n\n#start kafka broker in terminal 1\nKAFKA_HEAP_OPTS=\xe2\x80\x99\xe2\x80\x9d-Xmx1000M -Xms1000M\xe2\x80\x9d\xe2\x80\x99 \nKAFKA_OPTS=\xe2\x80\x9d-javaagent:/opt/kafka/prometheus/jmx_prometheus_javaagent-0.3.0.jar=7071:/opt/kafka/prometheus/kafka-0\xe2\x80\x938\xe2\x80\x932.yml\xe2\x80\x9d \nJMX_PORT=7071\n/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties \n\n\n#start …
Run Code Online (Sandbox Code Playgroud) 我有 kafka 的入门经验,我正在尝试探索它的细节。
我试图了解 kafka 分区如何帮助提高吞吐量;在我在网上找到的所有信息中;说明更多的分区意味着更多的并行流;这是有道理的。
然而,从不同的角度来看,它不会。
假设我有两个消费者,它们以每秒“10”条来自给定主题的消息的速度消耗数据。现在无论他们是从单个分区还是两个不同的分区消费;我的吞吐量将保持不变,每秒 20 条消息。
我觉得我一定遗漏了一些关于内部工作的细节,你能帮助我解释 kafka 分区(多个)如何帮助提高固定数量的消费者与单个 kafka 分区的吞吐量。
apache-kafka ×2
apache-spark ×2
bash ×1
containers ×1
docker ×1
jmx-exporter ×1
kubelet ×1
kubernetes ×1
prometheus ×1
pyspark ×1
python ×1
tcpdump ×1