Оба «put» & amp; Команды copyFromLocal работают точно так же. Вы не можете использовать команду «put» для копирования файлов из одного каталога hdfs в другой. Давайте посмотрим на это с примером: скажем, ваш корень имеет две директории с именем «test1» и «test2». Если «test1» содержит файл «customer.txt», и вы попытаетесь скопировать его в каталог test2 $ hadoop fs -put /test1/customer.txt / test2 Это приведет к ошибке «нет такого файла или каталога», поскольку «put» будет найдите файл в локальной файловой системе, а не в hdf. Они предназначены только для копирования файлов (или каталогов) из локальной файловой системы в hdfs.
если вам разрешена библиотека панд, то
импортируйте панд как pd
df = pd.read_csv ("TipJoke.csv")
blockquote> [ 114] df - это объект данных pandas, в котором вы можете выполнить несколько задач фильтрации в соответствии с вашими потребностями.
Например, если вы хотите получить данные для Шутки, вы можете отфильтровать их следующим образом:
print(df[df["Card"] == "Joke"])
Хотя я просто указываю вам направление, а не всю логику для вашего вопроса.
Это работает
from pprint import pprint
from string import punctuation
counts = {"Joke": 0, "Ad": 0, "None": 0}
with open("TipJoke.csv", "r") as f:
for line in f:
line_clean = line.replace('"', "").replace("\n", "").split(",")
try:
counts[line_clean[1]] += int(line_clean[2])
except:
pass
print(counts)