Installing the Azure Event Hubs Python SDK on Raspberry Pi OS 64-bit
Since we’re going through some heat waves in Europe, I thought it might be interesting to start measuring the humidity, temperature and pressure in my apartment. To do so, I decided to use my Raspberry Pi 3 and the Pi Sense HAT running a Python script constantly sending measurements to an Azure Event Hub.
On my Raspberry Pi I’m using the beta 64-bit Raspberry Pi OS (used to be called Raspbian) so it’s a Pi-flavoured version of Debian for aarch64 (ARM64).
This all seemed fairly simple until I had to install the Azure Event Hubs Python SDK on the Pi. The command to install the SDK is
1pip3 install azure-eventhub
The SDK relies on
and tries to install it as a dependency, but there are no wheels yet for aarch64
. So it tries to compile the C library while installing the dependencies. This did not seem to work on my Raspberry Pi as the compilation went out of memory.
You can start by decreasing the GPU memory allocation to 16MB (freeing up RAM for the CPU) with the
Next, you can increase the size of the swap file by editing
1# /etc/dphys-swapfile - user settings for dphys-swapfile package 2# author Neil Franklin, last modification 2010.05.05 3# copyright ETH Zuerich Physics Departement 4# use under either modified/non-advertising BSD or GPL license 5 6# this file is sourced with . so full normal sh syntax applies 7 8# the default settings are added as commented out CONF_*=* lines 9 10 11# where we want the swapfile to be, this is the default 12#CONF_SWAPFILE=/var/swap 13 14# set size to absolute value, leaving empty (default) then uses computed value 15# you most likely don't want this, unless you have an special disk situation 16CONF_SWAPSIZE=2048 17 18# set size to computed value, this times RAM size, dynamically adapts, 19# guarantees that there is enough swap without wasting disk space on excess 20#CONF_SWAPFACTOR=2 21 22# restrict size (computed and absolute!) to maximally this limit 23# can be set to empty for no limit, but beware of filled partitions! 24# this is/was a (outdated?) 32bit kernel limit (in MBytes), do not overrun it 25# but is also sensible on 64bit to prevent filling /var or even / partition 26#CONF_MAXSWAP=2048
Next, I tried compiling the uamqp dependency first before retrying to install
To do so, run the following commands:
1# Install the required dependencies to compile uamqp 2sudo apt install -y build-essential libssl-dev uuid-dev cmake libcurl4-openssl-dev pkg-config python3-dev python3-pip curl 3 4# Clone the C library source and submodules 5git clone --recursive https://github.com/Azure/azure-uamqp-c.git 6 7# Create a build directory, switch to it and set it up 8mkdir cmake 9cd cmake 10cmake .. 11 12# Build 13cmake --build . 14 15# Install 16sudo make install 17 18# Install the Python package without the binary 19pip3 install uamqp --no-binary :all:
If you now run
pip3 install azure-eventhub again, the installation will probably succeed within a few seconds.
You might also like
Deploy a data lake on Azure in less than an hour
This talk was given on multiple occasions: During a lunch webinar at dataroots . At Data Science Leuven (event details ). A data lake is fundamental to a modern big data approach so it’s important to set it up the right way. But how can you do that without having to spend hours on research and then losing days configuring every component of the data lake?
Serverless on Azure @ Tech Dive September 2019
On September 26th, 2019, I organized the RMDY Tech Dive in Edegem. This was a public event with several topics about web, cloud & mobile app development. During this meetup, I did a talk about serverless on Azure. I explained what serverless is, what Azure Functions are and how you can use them to build your own serverless applications.