2016-10-26 1 views
2

Я знаю, что RDD может сохраняться/кешировать память, диск или и то, и другое, но можно также сохранить его на HDFS. Проблема, с которой я сталкиваюсь, заключается в том, что у меня слишком мало памяти и дискового пространства на моем кластере, в то время как мое пространство HDFS огромно.Можно ли сохранить RDD на HDFS?

+0

является HDFS и рабочие узлы находятся в разных узлах кластера /? если да, то, на мой взгляд, это невозможно. – BDR

+1

Да ... Есть несколько способов сохранить HDFS. Что вы пытались исследовать, прежде чем спрашивать? –

+0

Я считаю, что содержимое RDD необходимо собрать в полном объеме на какого-нибудь работника, прежде чем его можно будет поместить в HDFS, хотя –

ответ

2

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"); 

RDD Persistence

+0

Связано ли это с узлом драйвера, или рабочие могут напрямую писать в HDFS? Я имею в виду, есть ли сбор на стороне водителя в этом случае? – pythonic

+0

Драйвер передаст эту команду узлам Worker и выполнит их. – mrsrinivas

+0

, но я думаю, что его действие не сохраняет RDD его результат сохранения в файле, потому что его действие m i правильно? –