, лежащий в основе JSON String, является
"{ \"column_name1\":\"value1\",\"column_name2\":\"value2\",\"column_name3\":\"value3\",\"column_name5\":\"value5\"}";
Ниже приведен скрипт для фильтрации JSON и загрузки необходимых данных в Cassandra.
sqlContext.read.json(rdd).select("column_name1 or fields name in Json", "column_name2","column_name2")
.write.format("org.apache.spark.sql.cassandra")
.options(Map("table" -> "Table_name", "keyspace" -> "Key_Space_name"))
.mode(SaveMode.Append)
.save()
Вот более подробная версия @Greg Hewgill
ответ . Это - большая часть приспосабливания требованиям вопроса. Это делает различие между датами создания и модификации (по крайней мере, в Windows).
#!/usr/bin/env python
from stat import S_ISREG, ST_CTIME, ST_MODE
import os, sys, time
# path to the directory (relative or absolute)
dirpath = sys.argv[1] if len(sys.argv) == 2 else r'.'
# get all entries in the directory w/ stats
entries = (os.path.join(dirpath, fn) for fn in os.listdir(dirpath))
entries = ((os.stat(path), path) for path in entries)
# leave only regular files, insert creation date
entries = ((stat[ST_CTIME], path)
for stat, path in entries if S_ISREG(stat[ST_MODE]))
#NOTE: on Windows `ST_CTIME` is a creation date
# but on Unix it could be something else
#NOTE: use `ST_MTIME` to sort by a modification date
for cdate, path in sorted(entries):
print time.ctime(cdate), os.path.basename(path)
Пример:
$ python stat_creation_date.py
Thu Feb 11 13:31:07 2009 stat_creation_date.py
Я сделал это в прошлом для сценария Python для определения последнее обновление файлы в каталоге:
import glob
import os
search_dir = "/mydir/"
# remove anything from the list that is not a file (directories, symlinks)
# thanks to J.F. Sebastion for pointing out that the requirement was a list
# of files (presumably not including directories)
files = filter(os.path.isfile, glob.glob(search_dir + "*"))
files.sort(key=lambda x: os.path.getmtime(x))
, Который должен сделать то, что Вы ищете на основе файла mtime.
РЕДАКТИРОВАНИЕ : Обратите внимание, что можно также использовать os.listdir () вместо glob.glob () при желании - причина, я использовал шарик в своем исходном коде, был то, что я желал использовать шарик, чтобы только искать файлы с определенным набором расширений файла, для которых лучше подходил шарик (). Для использования listdir, вот то, на что он был бы похож:
import os
search_dir = "/mydir/"
os.chdir(search_dir)
files = filter(os.path.isfile, os.listdir(search_dir))
files = [os.path.join(search_dir, f) for f in files] # add path to each file
files.sort(key=lambda x: os.path.getmtime(x))
Вот моя версия:
def getfiles(dirpath):
a = [s for s in os.listdir(dirpath)
if os.path.isfile(os.path.join(dirpath, s))]
a.sort(key=lambda s: os.path.getmtime(os.path.join(dirpath, s)))
return a
Первый, мы создаем список имен файлов. isfile () используется для пропуска каталогов; это может быть опущено, если каталоги должны быть включены. Затем мы сортируем оперативный список, с помощью изменить даты в качестве ключа.
Вот острота:
import os
import time
from pprint import pprint
pprint([(x[0], time.ctime(x[1].st_ctime)) for x in sorted([(fn, os.stat(fn)) for fn in os.listdir(".")], key = lambda x: x[1].st_ctime)])
Это называет os.listdir () для получения списка имен файлов, затем называет os.stat () для каждого для получения времени создания, затем виды против времени создания.
Примечание, что этот метод только называет os.stat () однажды для каждого файла, который будет более эффективным, чем вызов его для каждого сравнения в виде.
sorted(filter(os.path.isfile, os.listdir('.')),
key=lambda p: os.stat(p).st_mtime)
Вы могли использовать os.walk('.').next()[-1]
вместо того, чтобы фильтровать с os.path.isfile
, но это оставляет мертвые символьные ссылки в списке, и os.stat
перестанет работать на них.
Возможно, необходимо использовать команды оболочки. В Unix/Linux найдите переданными по каналу с видом, вероятно, будет в состоянии сделать то, что Вы хотите.
from pathlib import Path
import os
sorted(Path('./').iterdir(), key=lambda t: t.stat().st_mtime)
или
sorted(Path('./').iterdir(), key=os.path.getmtime)
или
sorted(os.scandir('./'), key=lambda t: t.stat().st_mtime)
, где m время является измененным временем.