Рубрики
Без рубрики

Как управлять большими данными с 5 библиотеками Python

Python действительно везде на данный момент. Хотя многие привратники утверждают, настоящий человек … Tagged с Python, базой данных, Codenewbie.

Python действительно везде на данный момент.

Хотя многие привратники утверждают, является ли человек действительно разработчиком программного обеспечения, если он не кодирует на языке более сложным, чем Python, он все еще везде.

Это используется для автоматизировать , Управление веб -сайтами анализируют данные и сразитесь с большими данными.

По мере того, как данные растет, способ управления мы становимся все более и более тонким.

Мы больше не ограничиваемся использованием только реляционных баз данных.

Это также означает, что в настоящее время существует больше инструментов для взаимодействия с этими новыми системами, такими как Kafka, Hadoop (более конкретно Hbase), Spark, BigQuery и Redshift (и многие другие).

Каждая из этих систем использует преимущества, таких как распределение, столбчатая архитектура и потоковые данные, чтобы быстрее предоставить информацию конечному пользователю.

Потребность в более быстрой, более актуальной информации будет стимулировать необходимость для инженеров и инженеров-программистов для использования этих инструментов.

Вот почему мы хотели бы быстро вступить в некоторые библиотеки Python, которые могут вам помочь.

Google BigQuery – это очень популярный склад Enterprise, созданный с комбинацией облачной платформы Google и BigTable.

Этот облачный сервис отлично подходит для всех размеров данных и выполняет сложные запросы за несколько секунд.

BigQuery – это Restful Web Service, которая позволяет разработчикам выполнять интерактивный анализ огромных наборов данных в сочетании с платформой Google Cloud. Давайте посмотрим на пример, который я собрал в Еще одна часть, расположенная здесь Анкет

from google.cloud import bigquery
from google.oauth2 import service_account

# TODO(developer): Set key_path to the path to the service account key
#                  file.
# key_path = "path/to/service_account.json"

credentials = service_account.Credentials.from_service_account_file(
    filename="project_g.json"

)

client = bigquery.Client(
    credentials=credentials,
    project=credentials.project_id,
)

medicare = client.dataset('cms_medicare', project='bigquery-public-data')

medicare = client.dataset('cms_medicare', project='bigquery-public-data')
print([x.table_id for x in client.list_tables(medicare)])

Этот пример показывает вам, как вы можете подключиться к BigQuery, а затем начать получать информацию о таблицах и наборах данных, с которыми вы будете взаимодействовать.

В этом случае набор данных Medicare-это набор данных с открытым исходным кодом, к которому любой может получить доступ.

Еще один момент о BigQuery – это работает на BigTable. Важно понимать, что этот склад не является транзакционной базой данных. Поэтому его нельзя рассматривать как базу данных онлайн -обработки транзакций (OLTP). Он разработан специально для больших данных. Следовательно, это работа соответствует обработке наборов данных размером с петабайт.

Далее у нас есть популярный Redshift Amazon и S3. Amazon S3 – это в основном услуга хранения, которая используется для хранения и получения огромных объемов данных из любого места в Интернете. С помощью этой услуги вы платите только за хранилище, которое вы на самом деле используете. Redshift, с другой стороны, представляет собой полностью управляемое хранилище данных, которое эффективно обрабатывает данные с петтабалитом. Эта услуга предлагает более быстрые запросы с использованием инструментов SQL и BI.

Вместе Amazon Redshift и S3 работают для данных в качестве мощной комбинации: огромные объемы данных могут быть перекачены в склад Redshift с помощью S3. Этот мощный инструмент, кодированный в Python, становится очень удобным для разработчиков. Давайте посмотрим на простой “Привет, мир!” Пример для справки.

Источник для кода ниже

__author__ = 'fbaldo'

import psycopg2
import pprint


configuration = { 'dbname': 'database_name', 
                  'user':'user_name',
                  'pwd':'user_password',
                  'host':'redshift_endpoint',
                  'port':'redshift_password'
                }




def create_conn(*args,**kwargs):

    config = kwargs['config']
    try:
        conn=psycopg2.connect(dbname=config['dbname'], host=config['host'], port=config['port'], user=config['user'], password=config['pwd'])
    except Exception as err:
        print err.code, err


    return conn


def select(*args,**kwargs):
    # need a connection with dbname=_db
    cur = kwargs['cur']

    try:
        # retrieving all tables in my search_path
        cur.execute("""select tablename from pg_table_def""")
    except Exception as err:
            print err.code,err


    rows = cur.fetchall()
    for row in rows:
        print row


print 'start'
conn = create_conn(config=configuration)
cursor = conn.cursor()
print 'start select'
select(cur=cursor)
print 'finish'

cursor.close()
for n in conn.notices():
    pprint(n)
conn.close()

Этот скрипт является базовым соединением. Выберите, используя psycopg2 Анкет

В этом случае я позаимствовал Jaychoo код.

Но это, опять же, обеспечивает быстрое руководство по подключению, а затем вытащите данные из Redshift.

Хорошо, давайте покинем мир систем хранения данных, и давайте рассмотрим инструменты, которые помогут вам быстро обрабатывать данные.

Apache Spark-это очень популярная рамка с открытым исходным кодом, которая выполняет крупномасштабную обработку распределенных данных. Это также может быть использовано для машинного обучения.

Эта структура кластера-выписки фокусируется в основном на оптимизации аналитики. Он работает с наборами данных с устойчивым распределением (RDD) и позволяет пользователям обрабатывать управляемые ресурсы Spark Clusters.

Он часто используется в сочетании с другими продуктами Apache (например, HBASE). Spark быстро обработает данные, а затем хранит их в таблицах, установленных в других системах хранения данных.

Чтобы начать, давайте посмотрим на основной пример запуска искры.

from pyspark.sql import Row
from pyspark.sql import SQLContext

sqlContext = SQLContext(sc)

data=[('Big Burger Chain',92),('Small Burger Chain',99),('Taco Bar',100),('Thai Place',70)] 

rdd = sc.parallelize(data)  

#convert the data into 
restaurant_map=rdd.map(lambda x: Row(restaurant=x[0], rating=int(x[1])))            

df_restaurant = sqlContext.createDataFrame(restaurant_map).collect()

Иногда установка Pyspark может быть проблемой, так как это требует зависимости. Вы видите, что он работает на вершине JVM и, следовательно, требует функционирования базовой инфраструктуры Java. Тем не менее, в эту эпоху, когда докер распространен, экспериментирование с Pyspark становится гораздо более удобной.

Alibaba используйте Pyspark для персонализации веб-страниц и предложения целевой рекламы-как многие другие крупные организации, управляемые данными

Kafka-это распределенная система обмена сообщениями об публикации, которая позволяет пользователям сохранять каналы сообщений как на реплицированных, так и в разделенных темах.

Эти темы – это в основном журналы, которые получают данные от клиента и хранят их в разделах. Kafka Python предназначен для работы в качестве официального клиента Java, интегрированного с интерфейсом Python. Лучше всего использовать с новыми брокерами и обратно совместим со всеми своими более старыми версиями.

Kafkaconsumer

from kafka import KafkaConsumer
from pymongo import MongoClient
from json import loads



consumer = KafkaConsumer(
    'sebtest',
     bootstrap_servers=['localhost:9092'],
     auto_offset_reset='earliest',
     enable_auto_commit=True,
     group_id='my-group',
     value_deserializer=lambda x: loads(x.decode('utf-8')))



client = MongoClient('localhost:27017')
collection = client.sebtest.sebtest

for message in consumer:
    message = message.value
    collection.insert_one(message)
    print('{} added to {}'.format(message, collection))

Kafkaproducer

from time import sleep
from json import dumps
from kafka import KafkaProducer


producer = KafkaProducer(bootstrap_servers=['localhost:9092'],
                         value_serializer=lambda x:
                         dumps(x).encode('utf-8'))
for e in range(10):
    data = {'number' : 'Hello this is message '+str(e)}
    producer.send('sebtest', value=data)
    sleep(1)

Как вы можете видеть в приведенных выше примерах, кодирование с Kafka Python требует как потребителя, так и обращенного производителя.

В Kafka Python у нас есть эти две стороны, работающие бок о бок. Kafkaconsumer в основном потребитель сообщений на высоком уровне, который намерен работать в качестве официального клиента Java.

Это требует брокеров для поддержки групповых API. Kafkaproducer является асинхронным производителем сообщений, который также намерен работать очень аналогично клиентам Java. Производитель может использоваться по темам без проблем, в то время как потребитель требуется многопроцесс.

Давайте убраем это с дороги. Нет, Hadoop сам по себе не является системой хранения данных. На самом деле есть несколько компонентов, включая MapReduce и распределенную файловую систему Hadoop (HDFS).

Таким образом, Pydoop находится в этом списке, но вам нужно будет соединить Hadoop с другими слоями (например, Hive), чтобы более легко сразиться с данными.

Pydoop-это интерфейс Hadoop-Python, который позволяет вам взаимодействовать с API HDFS и записывать задания MapReduce, используя код Pure Python.

Эта библиотека позволяет разработчику получить доступ к важным функциям MapReduce, таким как RecordReader и Разместитель , без необходимости знать Java. Для этого последнего примера я думаю, что люди в Edureka делают это лучше, чем я мог. Итак, вот отличное быстрое вступление.

Найдите здесь вступление

Сам Pydoop может быть слишком низким уровнем для большинства инженеров данных. Скорее всего, большинство из вас будут писать ETL в воздушном потоке, которые работают над этими системами. Но все еще здорово, по крайней мере, получить общее понимание того, с чем вы работаете.

Управление большими данными станет более жестким в ближайшие годы.

Из-за растущих сетевых способностей-IoT, улучшенных вычислительных средств и т. Д.-наводнение данных, которые поступают к нам, просто продолжит расти.

Таким образом, понимание некоторых систем и библиотек данных и библиотек, которые вы можете использовать для взаимодействия с этими системами, будет необходимо, если мы будем идти в ногу.

Спасибо за чтение.

Если вы хотите прочитать больше: Поток воздуха Airbnb против Spotify Luigi

Автоматизация загрузки файлов в SQL Server с Python и SQL

5 навыков каждый инженер -программист нуждается на основе описания работы

10 лучших курсов больших данных, Hadoop, Kafka и Spark

Варианты использования данных, которые улучшают финансовую отрасль

Консалтинга Data Science: как получить клиентов

Оригинал: “https://dev.to/seattledataguy/how-to-manage-big-data-with-5-python-libraries-4c6e”