Робота з великою кількістю JSON документів

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до DevOps спільноти!

Є купа дуже різноманітніх json у s3-бакеті (Azure Storage). Великі і маленькі, з дуже різною структурою.

Чи є якийсь інструмент, який дозволить передивлятись їх всі, обирати та дивитись зміст, вкрай бажано з можливістю підсвітки синтаксису і згортанням-розгортанням структури даних. Якщо ще буде можливо порівняти і побачити різницю між двома довільними документами — то буде супер, як і надіслати комусь посилання на конкретну розгорнуту структуру у документі.

Важливо — документи доступні виключно у внутрішній мережі, тож треба щось self-hosted

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

а для total commander-а немає плугіна? якихось нещасних двадять років тому він умів все

Застосуйте якийсь ноутбук(jupiter, databricks і тд). Якщо, їх дійсно БАГАТО застосуйте спарк

їх небагато, десятки, максимум пара сотен.

User: Can you mount s3 bucket as Linux directory?
ChatGPT: Yes, you can mount an S3 bucket as a Linux directory using various tools. Two common options are s3fs-fuse and goofys:

1. s3fs-fuse

This is a FUSE-based file system that allows you to mount an S3 bucket as a local filesystem.

Steps:

1. Install prerequisites:

sudo apt update
sudo apt install s3fs

2. Set up your AWS credentials: Add your AWS credentials to the passwd-s3fs file.

echo “ACCESS_KEY:SECRET_KEY” > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs

3. Create a mount point:

mkdir ~/s3bucket

4. Mount the S3 bucket:

s3fs bucket-name ~/s3bucket -o passwd_file=~/.passwd-s3fs

5. Unmount the S3 bucket:

fusermount -u ~/s3bucket

2. goofys

Goofys is another tool that can mount S3 buckets with better performance for workloads that require a lot of reading and writing.

Steps:

1. Install Goofys: You can either download a precompiled binary from the Goofys GitHub repository or install it using Go.

Example of downloading the binary:

wget github.com/...​es/latest/download/goofys
chmod +x goofys
sudo mv goofys /usr/local/bin/

2. Mount the S3 bucket:

goofys bucket-name ~/s3bucket

3. Unmount the S3 bucket:

fusermount -u ~/s3bucket

Both tools offer a simple way to interact with an S3 bucket as if it were a local directory, though performance may vary based on your specific use case (read/write operations, latency, etc.).

---

User: Can you now connect vscode via ssh to this directory?
ChatGPT: You can connect VSCode via SSH to a Linux server, but mounting an S3 bucket directly as a directory for editing within VSCode over SSH has some limitations. Here’s what you can and cannot do:

Steps to Connect VSCode via SSH

To connect to a Linux server (with the mounted S3 bucket) via SSH in VSCode, you can follow these steps:

1. Install the Remote — SSH Extension:

Open VSCode and go to the Extensions view by clicking on the Extensions icon or pressing Ctrl+Shift+X.

Search for Remote — SSH and install it.

2. Add SSH Configuration:

Open the Command Palette (Ctrl+Shift+P) and search for Remote-SSH: Add New SSH Host....

Add the SSH configuration by providing the username and IP address of your Linux server:

ssh user@your-server-ip

3. Connect to the Host:

After adding the configuration, go back to the Command Palette and search for Remote-SSH: Connect to Host... and choose the host you just added.

You’ll be prompted to authenticate (either via password or SSH key) to connect.

4. Access the Mounted S3 Directory: Once connected, you should be able to browse the Linux filesystem, including the directory where the S3 bucket is mounted (e.g., ~/s3bucket). You can open files, edit them, and work on them just like any other directory.

Limitations and Considerations:

Performance: Since the S3 bucket is mounted as a filesystem, performance can be slower compared to working with local files, especially for large files or when there’s a high number of read/write operations.

File Operations: Not all file system operations (like symlinks or certain file locks) might work the same way on an S3-backed filesystem as they would on a traditional local or network filesystem.

Alternative: Using the AWS S3 Extension for VSCode

If you experience performance issues with s3fs or goofys, or if you need more seamless integration, consider using the AWS Toolkit for Visual Studio Code:

1. Install the AWS Toolkit for VSCode:

In VSCode, search for and install the AWS Toolkit from the Extensions view.

2. Configure AWS Credentials in VSCode:

In the AWS Toolkit, you can add your AWS credentials and connect directly to your S3 buckets.

3. Browse and Edit S3 Files:

With the AWS Toolkit, you can directly browse and open S3 files from the bucket within VSCode without mounting them to a local directory.

While this approach doesn’t mount the bucket as a directory, it allows you to work with files stored in S3 directly in the VSCode environment with more efficient operations.

I don’t want to copy or mount it. I want to see it via web-browser.

Якщо багато json документів, потрібно завести json документ з переліком цих документів.

а скажіть ще щось по-армійськи

Журнал регистрации json файлов, журнал доступов к json файлам, журнал ответственных за json файлы

Можна поцікавитись — навіщо їх усі переглядати якщо їх так багато? Може зробити пошук по ним? Чи треба їх усі спочатку переглянути щоб вибрати ті що потрібні?

Вони не всі одночасно потрібні, більшість з цих документів — тимчасова, тобто зберігається місяць-два. Пошук як такий — не потрібен, зазвичай я знаю, що саме хочу глянути, але вони великі, і бажано «звернути» повну структуру і розвертати за потребою.

Для пошуку ще й індексувати треба, а вони більш-менш постійно додаються-видаляються. Хоча і не дуже часто.

Не те, що б я переглядав їх геть усі постійно, але я не знаю, який саме мені треба переглянути , чи порівняти з аналогічним, чи надіслати посилання співробітнику на строку/параметр.

вище вже вказували як монтувати бакет локально, з свого досвіду порекомендую rclone (підтримує azure blob storage, налаштуй максимальне кешування)

чесно кажучи до кінця не розумію, що саме тебе цікавить в тих json файлах, але для перегляду якогось одного куска в командній стрічці можна використовувати jq <щось там> | code

тобто ти вибереш один field і для перегляду передаш його в vscode

синтаксис запитів jq питай в chatgpt

Якраз в консолі мені НЕ треба з ними працювати, бо важливо мати можливість поділитися посиланням.

як клонувати монтувати та фільтрувати з jq я знаю. Питання за якийсь онлайн інструмент. В браузері

new relic i datadog (платні сервіси) можуть працювати з json файлами різних схем, порівнювати — ні, але швидкий пошук по ключам/полям з регексом і зберіганням рузультатів в URL для розшарення — без проблем
ще можна включити в blob storage sftp і відкривати blob storage в vscode, там в якомусь плагіні типу data wrangler можна ділитись (памятаю, що в нас в тімс нотифікаціях були якісь кастомні урли для vscode + data warngler для проблемних даних після data quality checks)

Важливо — документи доступні виключно у внутрішній мережі, тож треба щось self-hosted

Те що спадає на думку це vscode server + blob fuse

Перш ніж ранити своє рішення, а амазонівські сервіси вам не підходять? Наприклад зробити пару кверів які вам потрібно в AWS Athena? Там можна як джерело обрати S3 + json і розпарсити як вам забажається. Для складання складного Query запиту GPT в допомогу

написано ж, в Ажурі лежать дані

В принципі, налаштувати дублювання у s3 — не велика проблема. Але бажано б мати найпростіше рішення.

Є купа дуже різноманітніх json у s3-бакеті (Azure Storage).

А може хтось пояснити, як це?

Йдеться про “Blob storage”?

Тобто я можу їх зберігати і там і там. Azure Storage Blob простіше з різних причин, але не так щоб дуже принципово.

Так я ж і намагаюсь пошукати існуючі рішення.

Запроси це гарно, але структура там дууже різна і заздалегідь не відома. Я можу приблизно знати що шукати, скажемо так, по «шляху до змінної». Працювати запросами не дуже зручно. Бо зазвичай мені потрібно оглянути файл загалом (потрібно підсвітити синтаксис для зручності), чи якусь частину, або перевірити якусь змінну. Так то я можу дублювати локально та юзати jq — але інколи треба поділитися і показати і тут web-рішення було-б зручніше.

Підписатись на коментарі