Portfolio Manager demo using Spark
The Portfolio Manager demo runs an application that is based on a financial use case. You run scripts that create a portfolio of stocks.
The Portfolio Manager demo runs an application that is based on a financial use case. You run scripts that create a portfolio of stocks. On the OLTP (online transaction processing) side, each portfolio contains a list of stocks, the number of shares purchased, and the purchase price. The demo's pricer utility simulates real-time stock data. Each portfolio gets updated based on its overall value and the percentage of gain or loss compared to the purchase price. The utility also generates 100 days of historical market data (the end-of-day price) for each stock. On the DSE OLAP (online analytical processing) side, a Spark job calculates the greatest historical 10 day loss period for each portfolio, which is an indicator of the risk associated with a portfolio. This information is then fed back into the real-time application to allow customers to better gauge their potential losses.
Procedure
-
Install a single Demo node using the DataStax Installer in GUI or Text mode with the
following settings:
- Install Options page - Default Interface: 127.0.0.1 (You must use this IP for the demo.)
- Node Setup page - Node Type: Analytics
-
Start DataStax Enterprise if you haven't already:
- Package and Installer-Services installations:
sudo service dse start
- Tarball and Installer-No Services installations:
installation_location/bin/dse cassandra -k ## Starts node in Spark mode
The default installation_location is /usr/share/dse.
- Package and Installer-Services installations:
-
Go to the Portfolio Manager demo directory.
The default location of the Portfolio Manager demo depends on the type of installation:
- Package installations and Installer-Services: /usr/share/dse/demos/portfolio_manager
- Tarball installations and Installer-No Services: installation_location/demos/portfolio_manager
-
Run the bin/pricer utility to generate stock data for the application:
- To see all of the available options for this
utility:
bin/pricer --help
- Start the pricer utility:
bin/pricer -o INSERT_PRICES $ bin/pricer -o UPDATE_PORTFOLIOS $ bin/pricer -o INSERT_HISTORICAL_PRICES -n 100
The pricer utility takes several minutes to run. - To see all of the available options for this
utility:
-
Start the web service:
$ cd website $ sudo ./start
-
Open a browser and go
to http://localhost:8983/portfolio.
The real-time Portfolio Manager demo application is displayed.
- Open another terminal.
-
Run the Spark SQL job in the 10-day-loss.q file.
dse spark-sql -f 10-day-loss.q
-
Run the equivalent Spark Scala job in the
10-day-loss.sh
script.The Spark application takes several minutes to run.
./10-day-loss.sh
-
Run the equivalent Spark Java job in the
10-day-loss-java.sh script.
./10-day-loss-java.sh
-
After the job completes, refresh the Portfolio Manager web
page.
The results of the Largest Historical 10 day Loss for each portfolio are displayed.
What's next
The Scala and Java source code for the demo are in the src directory.