Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add developer guide for loading data #74

Merged
merged 5 commits into from
Aug 28, 2024
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions docs/dev_guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# JupyterLab Developer Guide

## Accessing JupyterLab Development Environment

### 1. Create SSH Tunnel:

Execute the following command to create an SSH tunnel to the remote server (`login1.berkeley.kbase.us`):

```bash
ssh -f -N -L localhost:44041:10.58.2.201:4041 <ac.anl_username>@login1.berkeley.kbase.us
```
Comment on lines +6 to +12
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought we already had docs like this somewhere?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yea. Similar instructions in the user's guide. https://github.com/kbase/cdm-jupyterhub/blob/main/docs/user_guide.md
But dev has different port number. That's also the reason I didn't make it as detailed as the user's guide.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe link to the user guide for more info?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


### 2. Access JupyterLab Notebooks:

Open a web browser and navigate to the following URL:

```
http://localhost:44041
```
This will open the JupyterLab Notebook interface running on the remote server.


## Accessing MinIO
Please refer to the [MinIO Guide](minio_guide.md) for instructions on accessing MinIO.

### Read/Write MinIO username and password
Get the MinIO username and password with read/write permission from the above development JupiterLab environment.
```python
import os
minio_username, minio_password = os.environ['MINIO_ACCESS_KEY'], os.environ['MINIO_SECRET_KEY']
print(f"MinIO username: {minio_username},\nMinIO password: {minio_password}")
```
MrCreosote marked this conversation as resolved.
Show resolved Hide resolved

### Naming conventions
Please adhere to the following naming conventions for MinIO buckets and objects:

#### Source Files:
Source files are the raw data files that are uploaded to MinIO.
* Bucket name: `namespace_name`-source
* File name: The file name should either clearly represent the table name or be formatted in a way that allows a
program to easily extract the table name from it.

#### Delta Table Files:
Delta table files are Parquet files generated by Spark during the creation of a table.
* Bucket name: `namespace_name`-delta

## Loading Notebooks
Please create a corresponding loading notebook for each namespace in the `data-loading-notebooks` directory.

Please use the existing loading notebooks as examples.

🚨 **Please DO NOT rerun the loading notebooks in the development environment. Instead, create a new notebook for each
new namespace and manually verify the data loading process.**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not totally sure what this means. If you need to reload the data shouldn't you reuse the notebook?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated the note to make it more clear. I was trying to prevent people running existing loading notebook and accidentally update existing tables.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there anything that should be added about ensuring the notebook works when overwriting as opposed to loading clean? I'm not sure there's a guarantee that a notebook can be run without dropping the tables first

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that's fine for now. I haven't thoroughly tested the process of reloading or altering tables yet. For now, I just want to ensure people only load/update their own tables and avoid modifying others' tables. I've observed that people often rerun notebooks to check the output for convenience.








Loading