def get_file_content(filename): chunks = [] for f in dfs.files(): if f.name == filename: chunks = f.chunks if len(chunks) == 0: return clocs = {} for c in dfs.chunk_locations(): clocs[c.id] = c.chunkserver for chunk in chunks: try: loc = clocs[chunk] if loc == "": raise "ERROR: location of chunk %s is unknown" % chunk for l in dfs.get_chunk_data(loc, chunk): yield l[:-1] except StopIteration: pass
def demo(): for f in dfs.files(): print("File {0} consists of fragments {1}".format(f.name, f.chunks)) for c in dfs.chunk_locations(): print("Chunk {0} sits on chunk server {1}".format(c.id, c.chunkserver)) # Дальнейший код всего лишь тестирует получение фрагмента, предполагая, что известно, # где он лежит. Не рассчитывайте, что этот фрагмент всегда будет находиться # на использованных тут файл-серверах # При использовании test_dfs читаем из каталога cs0 chunk_iterator = dfs.get_chunk_data("cs0", "partitions") # При использовании http_dfs читаем с данного сервера #chunk_iterator = dfs.get_chunk_data("104.155.8.206", "partitions") print("\nThe contents of chunk partitions:") for line in chunk_iterator: # удаляем символ перевода строки print(line[:-1])