Welcome to my personal place for love, peace and happiness 🤖

Later Ctrl + ↑

Прочитал полезную книгу data science at the command line

Сразу к делу:

docker pull datasciencetoolbox/dsatcl2e
docker run --rm -it datasciencetoolbox/dsatcl2e

Подробности тут: https://datascienceatthecommandline.com/2e/chapter-2-getting-started.html

cowsay "Let's moove\!"
 ______________
< Let's moove! >
 --------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Вот думаю может перевести на русский язык ... хм..

Тестирую Yandex Data Proc

Не буду описывать подробно как заказать услугу Data Proc, так как это оказалось достаточно просто.
Генерируем ключ ( желательно без пароля ) для более удобного доступа.

ssh-keygen -t rsa

Создаем Data Proc кластер ... next next finish ...

Копируем данные на ноду:

cat "/Users/yuriygavrilov/Documents/My Tableau Repository/Datasources/2022.1/en_US-US/Sample - Superstore.txt" | ssh -i /Users/yuriygavrilov/ssh_key/ya_np/ya ubuntu@51.250.79.62 'cat | hadoop fs -put - "hdfs://rc1a-dataproc-m-a1s92pxkgxp555pm.mdb.yandexcloud.net:8020/user/hive/warehouse/stor/stor.csv"'

Обвязываем табличку:

create external table store 
(Row_ID	string	,
Order_ID	string	,
Order_Date	string	,
Ship_Date	string	,
Ship_Mode	string	,
Customer_ID	string	,
Customer_Name	string	,
Segment	string	,
Country_Region	string	,
City	string	,
State	string	,
Postal_Code	string	,
Region	string	,
Product_ID	string	,
Category	string	,
Sub_Category	string	,
Product_Name	string	,
Sales	string	,
Quantity	string	,
Discount	string	,
Profit	string	
)       
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION 'hdfs://rc1a-dataproc-m-a1s92pxkgxp555pm.mdb.yandexcloud.net:8020/user/hive/warehouse/stor/'
tblproperties ("skip.header.line.count"="1");

Создаем таблицу итогов продаж по регионам:

create table region_sales
(region string,
sales float 
);

Загружаем данные:

insert into region_sales (region, sales) select region, sum(REPLACE(sales, ",", ".")) as sales from store group by region ;

Проверяем итоги:

select * from region_sales

Central 501239.9
East 678781.25
South 391721.9
West 725457.8

Все ровно)
но вот запросы исполняются достаточно долго 12 секунд, но никто и не обещал скорость на малых данных.

В целом очень удобно. Заказал, загрузил, посчитал и выключил.

А теперь тестируем Спарк:

spark-shell
import spark.implicits._
import spark.sql
sql("SELECT region, sum(sales) FROM store_orc group by Region").show()
+-------+------------------+
| region|        sum(sales)|
+-------+------------------+
|  South|391721.90536534786|
|Central|  501239.889593184|
|   East| 678781.2377765179|
|   West| 725457.8231142759|
+-------+------------------+

Класс!) заработало)

 1 comment   2022   Data Proc   hadoop   yandex

Статичный хостинг сайтов по протоколу s3 от Storj

Иногда достаточно простой страницы, которую мы хотим опубликовать в интернет. Хостингов много разных, а хочется не только страницу сделать, но и выложить там фотки например гигов на 150 с последнего отпуска. Конечно можно купить хостинг Яндекс диск или еще Гугл и шарить папки, но кто ищет легких путей)) не я точно.

Ниже я расскажу как создать хостинг статичных страничек на протоколе s3 от Storj

Вот коротко, что требуется:

  1. Аккаунт
  2. Папку
  3. Uplink
  4. Домен и DNS

А теперь подробнее:

  1. Заводим аккаунт на https://www.storj.io – тут просто, выбираем регион из трех Европа, Азия или США. Сразу скажу, что логины отличаются в разных регионах и стоит запомнить в каком регионе вы регистрируетесь.
  1. После регистрации заходим в раздел Bucket и создаем новый с любым названием. Например, “site”. Имейте ввиду, что регистр важен и лучше использовать маленькие буквы. При создании бакета потребуется придумать пароль. ВАЖНО! Если его забыть то ничего восстановить не получится. Так что придумываем надежный пароль и помним его сильно))). Можно, кстати не придумывать и положиться на систему и она сгенерирует автоматически ключевую фразу в несколько слов. Выучить предложение наизусть в этом случае будет сложно, да и печатать долго. Ладно будем считать пакет создан.
  1. На этом этапе нужен uplink. Скачать его можно тут: https://docs.storj.io/dcs/downloads/download-uplink-cli/

Далее настраиваем доступы API вводим команду:

uplink setup

Но погодите, у нас же нет еще ключей! А их мы должны взять в личном кабинете и предварительно сгенерировать. При генерации ключей можно давать полный доступ. Эти ключи не будут использоваться публично. Они нужны для работы Uplink, который запускается локально на вашем ПК.

Что бы сделать ключ заходим в аккаунт storj, меню Access и наживаем “Create Keys for CLI”. Там выбираем API и полные права. После генерации система выдаст две строки: ‘satellite address as “< nodeid>@

:” и API Key’. Запоминаем их и возвращаемся к Uplink. Он попросит сначала выбрать регион. Далее указать строку сателлиты, а за тем API Key. А в самом конце попросит ключ фразу от папки (бакета). На последнем этапе лучше не ошибаться, так как сообщений об ошибке не будет потому как это пароль шифрования, а не доступа. Если пароль будет другим, то вы не увидите там файлов. В общем не ошибаемся на этом этапе и аккуратно вводим пароль. Еще дополню, что можно запутаться с паролями и папками и правами для простоты можете создать один общий пароль или создавать для каждой папки свой пароль и свои API ключи. В прочем делайте, как вам нравится.

и так Uplink работает. А если нет то вот инструкция: https://docs.storj.io/dcs/api-reference/uplink-cli/setup-command/

  1. Генерируем общий доступ для нашей папки site. Для этого нужно выполнить команду:
uplink share --dns www.example.com sj://bucket/prefix

В итоге uplink выдаст настройки DNS, которые мы указываем у своего провайдера.

$ORIGIN example.com.
$TTL    3600
www.example.com    	IN	CNAME	link.storjshare.io.
txt-www.example.com	IN	TXT  	storj-root:bucket/prefix
txt-www.example.com	IN	TXT  	storj-access:jqaz8xihdea93jfbaks8324jrhq1

Все! Кладем в папку site index.html и радуемся.

 1 comment   2022   s3   Storj   www   хостинг

Открыл сезон сёрфборда

В прошлом году встал на доску и даже научился кататься с откинутым фалом ( без троса )
А в этом году так сразу не получилось. Все таки нужна практика и еще раз практика.

Где можно покататься: Пирогово, Строгино, Мякинино.
Где понравилось больше: Мякинино.
Цены примерно одинаковые. 5000р за 30 минут.

Рисую простую диаграмму на Python

Вот собственно сам код:

import pandas as pd
import altair as alt

df = pd.read_excel('Sample - Superstore.xls', index_col=0) 
df2 = df.groupby('Region').sum()
df2 = df2.reset_index(level=0)

bars = alt.Chart(df2).mark_bar().encode(
   alt.X('Region:N', sort='-y'),
   alt.Y('Sales:Q'),
   color=alt.condition(  alt.datum.Region == 'West',  # If the year is 1810 this test returns True,
   alt.value('orange'),     # which sets the bar orange.
   alt.value('steelblue'))   
)

text = bars.mark_text(
    align='left',
    baseline='middle',
    dx=11  # Nudges text to right so it doesn't appear on top of the bar
).encode(
    text='mean(Sales):Q'
)

(bars + text).properties(height=300)

Заметка о Docker

С момента запуска нод Storj ( выплату дохода еще не получал но он растет 🤑 ) начал использовать Docker контейнеры, которые запускаю на nas диске.
Очень удобно.

Пара полезных команд:

docker update --restart=always <container>  
## Запускает контейнер после перезагрузки. 

docker ps -a
# показывает запущенные контейнеры

## ну и еще куча разных можно узнать так: 
docker --help

В целом докер удобен и прост в использовании, но уже не так модно как поды ...
Если этот факт не смущает, то можете смело выбирать понравившийся контейнер и запускать где-нибудь. Например, этот https://hub.docker.com/r/jupyter/datascience-notebook для дата саенса... или дэйта саенса.

 No comments   2022   Docker

Новый рестик новый вкус

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

http://larotondatver.ru

Кстати, очень любят микрозелень, почти все блюда с парой стеблей фасоли.

Earlier Ctrl + ↓