Я знаю, что RDD может сохраняться/кешировать память, диск или и то, и другое, но можно также сохранить его на HDFS. Проблема, с которой я сталкиваюсь, заключается в том, что у меня слишком мало памяти и дискового пространства на моем кластере, в то время как мое пространство HDFS огромно.Можно ли сохранить RDD на HDFS?
ответ
RDD стойка возможен до внутри рабочий машина (память и диск) только. Некоторые уровни устойчивости делают копию RDD на других рабочих машинах в кластере.
На сегодняшний день, чтобы сохранить RDD/DataFrame в HDFS, мы должны использовать только API записи.
Запись в HDFS:
// Writing DataFrame
df.write.save("hdfs://namenode_host:port/file/path");
//Writing RDD
rdd.saveAsTextFile("hdfs://namenode_host:port/file/path", "codec_if_any");
Связано ли это с узлом драйвера, или рабочие могут напрямую писать в HDFS? Я имею в виду, есть ли сбор на стороне водителя в этом случае? – pythonic
Драйвер передаст эту команду узлам Worker и выполнит их. – mrsrinivas
, но я думаю, что его действие не сохраняет RDD его результат сохранения в файле, потому что его действие m i правильно? –
является HDFS и рабочие узлы находятся в разных узлах кластера /? если да, то, на мой взгляд, это невозможно. – BDR
Да ... Есть несколько способов сохранить HDFS. Что вы пытались исследовать, прежде чем спрашивать? –
Я считаю, что содержимое RDD необходимо собрать в полном объеме на какого-нибудь работника, прежде чем его можно будет поместить в HDFS, хотя –